草庐IT

c - 如何使用 C 和 WinAPI 将包含特殊字符的文本复制到剪贴板?

我正在尝试制作将文本​​复制到剪贴板的小c程序。我在这个网站上发现了这个问题。程序代码:constchar*output="Test";constsize_tlen=strlen(output)+1;HGLOBALhMem=GlobalAlloc(GMEM_MOVEABLE,len);memcpy(GlobalLock(hMem),output,len);GlobalUnlock(hMem);OpenClipboard(0);EmptyClipboard();SetClipboardData(CF_TEXT,hMem);CloseClipboard();此程序会将文本复制到剪贴板。但我

c++键盘记录器无法正常工作

我访问stackoverflow已经有一段时间了,这是我在这个网站上的第一个问题:)我正在尝试编写一个键盘记录器,它将把按下的键保存在一个.txt文件中,但问题是这样的。我用cout检查cmd.exe上的输出,发现它工作正常,但是当我打开LOG.txt文件时,我看到程序将abcdefgh打印为012345678。只有这些非大写字母不起作用。文件中的每个其他键都正确打印。这是我的主要功能:intmain(){Stealth();//Focus();chari;while(1){for(i=8;i保存功能:intSave(intkey,char*file){FILE*OUTPUT_FILE

c++ - 如何在 MFC 中获取嵌入式 Web 浏览器控件的 HWND

我正在使用嵌入式webbrowsercontrol在基于对话框的MFC窗口中,我需要知道其中的Web浏览器控件的HWND。我能够找到以下声称可以检索它的代码:HWNDhWndWebBrowser=NULL;LPUNKNOWNunknown=m_browser.GetControlUnknown();IWebBrowser2*pWB=NULL;if(SUCCEEDED(unknown->QueryInterface(IID_IWebBrowser2,(void**)&pWB))){CComPtrpServiceProvider;if(SUCCEEDED(pWB->QueryInterfa

c++ - 使用管道从子进程重定向 I/O - winapi

我正在使用一个提供api的应用程序,以便更轻松地编写脚本。基本上,当您编写有效输入时,它会输出一个答案。我想使用该输出来发送更多输入,例如:Input:Output:1,56,23InputOutput:"Apple"我想要做的是一个写入目标进程STDIN,然后从它的STDOUT读取输出的程序。为此,我主要从那里获取代码:CreatingaChildProcesswithRedirectedInputandOutput(Windows)-MSDN唯一的问题是,为了从子进程读取,我首先需要关闭用于写入它的父进程的句柄,这意味着我不能使用子进程的输出来写入更多的东西。这是从msdn中提取的

windows - 为什么另一个线程中的阻塞 IO 会阻止 CreateWindowEx() 返回

我有一个非常简单的Windows控制台应用程序,它首先创建一个线程来处理stdin上的输入。它使用main()中的CreateThread()创建线程,线程做的第一件事是调用getchar()并阻塞,等待。然后main()使用RegisterClass()注册一个窗口类,并调用CreateWindowEx()创建一个不可见的消息窗口。但是CreateWindowEx()永远不会返回。如果我删除线程中的getchar()并将其替换为while(1)Sleep(1000);,一切正常。如果我将Sleep(1000);添加到线程函数的开头,CreateWindowEx()调用会成功,但随后线

c - 读取 ntdll.dll + offset 导致访问冲突

我试图逐字节读取加载到我的可执行文件中的ntdll.dll的内存。该可执行文件在我的x64windows7机器上编译为x32可执行文件。我编写了一个名为FindPattern的函数,它接收一个特定的字节数组,并在ntdll.dll模块中查找这个字节数组。我已经在其他模块上检查过这个功能,我确信它工作正常。现在当我在我的ntdll模块上使用这个函数时,它在读取内存ntdll+0x1000时崩溃。我在windbg上检查过这个,windbg也不能读取内存:0:000>dbntdll+FF0L2077df0ff00000000000000000-0000000000000000........

windows - TokenUser 和 TokenOwner 的区别

进程(-token)都有所有者和用户,可以使用winapi函数检索OpenProcessToken().这两者有什么区别,什么时候不同? 最佳答案 来自AccessTokens:Theaccesstokenfunctionsusethefollowingstructurestodescribethepartsofanaccesstoken.[...]TOKEN_OWNERThedefaultownerSIDforthesecuritydescriptorsofnewobjects.[...]TOKEN_USERTheSIDofthe

windows - SetConsoleActiveScreenBuffer 使 ReadConsole 返回 ERROR_SHARING_VIOLATION

当我使用创建的缓冲区调用SetConsoleActiveScreenBuffer()时,它似乎使ReadConsole停止使用ERROR_SHARING_VIOLATION。我检查了句柄权限,据我所知,它们是正确的。如果我注释掉SetConsoleActiveScreenBuffer行,输入将完美运行。我可能在这里做错了什么?我还尝试过使用ReadFile而不是ReadConsole,并使用CreateFile而不是GetStdHandle获取输入缓冲区。两种方式,都会出现同样的错误。#includeintmain(){void*oldScreenBuffer;void*screenB

c++ - Windows 上不可靠的文件系统操作

我不得不注意到Bazaar的一些奇怪行为我的机器上的目录锁定机制并试图重现它。这是我的简单测试用例:创建一个目录Test,然后是Test/held,然后是一个文件Test/held/info。将Test重命名为YXCV。读取在步骤1中创建的文件(现在从路径YXCV/held/info)。清理(删除文件和目录)。重复。很奇怪,这失败了。有时在第2步(“权限被拒绝”),有时在第3步(文件无法打开,尽管之后我可以在常规文本编辑器中打开文件)。有时这会立即失败,有时会成功执行数千次迭代。我这里运行的是Windows7。我怀疑一些配置更改(公司IT管理超出了我的控制范围),因为问题发生在一周前。

windows - 在 C :\ProgramData 中创建用户独立的日志文件

我想在用户独立的哺乳期为我的应用程序创建日志文件。据我所知C:\ProgramData是个好地方。我试过这种方法:ifnotDirectoryExists('C:\ProgramData\MyApp')thenCreateDirectory('C:\ProgramData\MyApp',nil);LogFileStream:=TFileStream.Create('C:\ProgramData\MyApp\LogFile01.txt',fmCreate,(fmOpenReadorfmShareDenyNone));这种方法的问题是创建的文件没有AuthenticatedUsers也不E