草庐IT

windows - 如何找到线程本地存储的开始和结束?

在Windows和Linux下,如何在给定线程句柄的情况下确定其对应的静态线程本地存储block的开始和结束? 最佳答案 您可以在ThreadInformationBlock中找到此信息.但是请注意,这样做会访问未记录的结构,因此高度不可移植并且可能会在未来版本的Windows中中断。您似乎可以从TIB获取当前线程的线程本地存储区域;我不确定你会得到另一个线程的TLS。您可以尝试深入研究TIB中偏移量0x30处的进程环境block(PEB),但同样,您正在处理可能会发生变化的未记录结构。

windows - 如何获取当前键盘布局的代码页?

我的非Unicode应用程序需要能够处理Unicode键盘输入(WM_CHAR等),从而接收8位字符代码,然后在内部将其转换为Unicode。需要9x兼容性,因此不能选择使用大多数UnicodeAPI。目前它查看PRIMARYLANGID(GetKeyboardLayout(0))返回的语言,并在硬编码表中查找相关代码页。我找不到获取特定语言或键盘布局使用的代码页的函数。然后可以使用MultiByteToWideChar转换字符/字符串。有没有办法获取当前键盘布局的代码页?GetACP返回默认的系统代码页,不受当前键盘布局的影响。 最佳答案

c++ - 识别文件 (dll/exe) 是否被进程或库锁定

我打算编写一个示例程序来识别某个进程锁定/使用的文件(dll文件)。我们如何使用WINAPI(C/C++函数)以编程方式实现这一点?实际上,当我们执行某些软件升级过程时,其他一些过程可能正在使用该库,这将使升级操作暂时失败。我想在这里举的最好的例子是Unlocker工具,它列出了所有使用特定文件的进程/dll。 最佳答案 您可以尝试自己打开文件以获得独占访问权限。如果任何其他进程打开了它们,这应该会失败。 关于c++-识别文件(dll/exe)是否被进程或库锁定,我们在StackOver

c++ - 如何获取命名管道中要(可靠地)读取的数据长度?

我创建了一个带有以下标志的命名管道:PIPE_ACCESS_DUPLEX-双方读/写访问权限PIPE_TYPE_MESSAGE-已读消息类型PIPE_WAIT-阻塞读\写我从服务器端调用ConnectNamedPipe并等待客户端连接。我从客户端调用CallNamedPipe连接服务器并写入长度为N的数据。在服务器端:客户端连接后,PeekNamedPipe被调用以获取分配给读取数据缓冲区的缓冲区的长度。获得确切的缓冲区大小(N)后,我分配长度为N的缓冲区并调用ReadFile从Pipe读取数据。问题:问题是——在单处理器机器上,PeekNamedPipeAPI将缓冲区长度返回为0。因

windows - 静态链接的应用程序 - 无效或损坏的 dll

我有一个使用winInet类的应用程序-#include和wininet.dll我想在我的应用程序和dll中静态链接WinInet函数调用,所以我遵循了thesesteps.然后,当我阅读here时,我将wininet.dll复制到我的项目目录中.构建时出现以下错误-wininet.dll:fatalerrorLNK1136:invalidorcorruptfile我的第一个问题是:-我是否正确地做了我认为静态链接函数调用和dll的事情?-如果是这样,为什么dll使用此设置损坏,但没有这些更改也能正常工作?感谢任何帮助。谢谢。 最佳答案

c++ - 如何使用 errorno 和 _get_errno?

调用system()运行外部.exe并在出错时检查错误代码:#include#includefunction(){errno_terr;if(system(tailCmd)==-1)//ifthereisanerrorgeterrno{//Errorcallingtail.exe_get_errno(&err);}}前两个编译错误:errorC2065:'err':undeclaredidentifiererrorC2065:'errno_t':undeclaredidentifier不确定为什么要包括requiredandoptionalheaderfiles?任何帮助表示赞赏。谢谢

C/C++ Allegro 程序导致 Windows 7 切换到 Aero Basic

我只是在试用allegro库,这是我目前得到的代码:#includeintmain(intargc,char*argv[]){allegro_init();//initializetheallegrolibrariesinstall_keyboard();//initializekeyboardfunctionsset_color_depth(16);//setthecolordepthset_gfx_mode(GFX_AUTODETECT_WINDOWED,640,480,0,0);//setup640*480pxwindowBITMAP*pic=NULL;pic=load_bitm

c# - 程序如何处理文件 "opened with..."呢?

我想知道是否有人可以指出正确的方向。例如,您知道在大多数IDE中,如果您使用“打开方式”打开源文件,它会运行程序并将其打开吗?然后如果您打开另一个,它会在同一进程中的新选项卡中打开它吗?我的问题不是如何将程序添加到shell命令,而是:例如,C#应用程序如何“接收”PDF文件?当另一个文件与它一起运行时,应用程序如何在同一进程中打开该文件(不必程序实例)? 最佳答案 当第二个程序实例启动时,在加载任何界面组件之前,它检查是否有另一个程序实例正在运行。如果是这样,它会以某种方式与其通信(特定于程序:这可以是套接字、进程间中断、共享内存

windows - 如何在 Windows 上破坏计算机空闲检测?

为了检测用户缺席GetLastInputInfo()可以使用。我想让GetLastInputInfo()返回我一直在使用键盘/鼠标-因为我一直在积极使用计算机,所以任何依赖GetLastInputInfo()认为我正在积极使用计算机。我可以使用任何WindowsAPI函数来实现吗? 最佳答案 您正在寻找SendInputfunction. 关于windows-如何在Windows上破坏计算机空闲检测?,我们在StackOverflow上找到一个类似的问题: h

windows - Windows 服务可以接收 Windows 消息吗?

我创建了一个应用程序来接收广播的Windows消息,效果很好。当我把它变成一个服务、安装它并启动服务时,该服务没有收到消息。 最佳答案 服务可能必须被授予访问桌面的权限。从服务属性、“登录”选项卡、以本地系统帐户登录并选中“允许服务与桌面交互”来执行此操作。 关于windows-Windows服务可以接收Windows消息吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/293