草庐IT

c++ - 如何获取当前进程的线程 ID 列表

EnumProcess或CreateToolhelp32Snapshot函数帮助我们获取进程信息,包括进程ID。但是我想知道获取当前进程的线程id列表。DWORDGetMainThreadId(DWORDpId){LPVOIDlpThId;_asm{moveax,fs:[18h]addeax,36mov[lpThId],eax}HANDLEhProcess=OpenProcess(PROCESS_VM_READ,FALSE,pId);if(hProcess==NULL)returnNULL;DWORDtId;if(ReadProcessMemory(hProcess,lpThId,&t

windows - 针对每次单击按钮创建一个单独的窗口

我正在开发WindowsGUI应用程序。我的窗口上有20个按钮。针对每次单击按钮,我想打开一个新窗口来显示一些信息。它可以是任何可以显示一些信息的东西,但由于我对这一切都是陌生的,而且我不想尝试任何复杂的东西,所以我决定采用在每次单击按钮时创建一个弹出窗口的想法。现在我面临的问题是既然有20个不同的窗口,是否需要创建20个不同的窗口回调函数?虽然弹出窗口中只有一个控件,即关闭标志,但即使如此,我也需要有一个CALLBACK函数。我一直在尝试这个,但现在这个想法看起来毫无意义。是否有任何其他选项可以实现所需的功能?等待帮助。 最佳答案

c++ - 有关虚拟文件夹的文档

我正在寻找有关如何制作虚拟文件夹的WindowsAPI文档。我将制作我自己的文件系统,并希望在该文件系统的“计算机”下有一个图标。我见过其他具有此类解决方案的程序,例如允许我在Explorer程序中探索Linux文件系统的程序。很像我要制作的相同解决方案。我还没有找到任何关于如何执行此操作的文档,或者我在搜索错误的东西吗?谢谢。 最佳答案 您正在寻找Shell命名空间扩展。文档的入口点是CreatingShellDataSourceObjectsandExtendingtheShellNamespace.可以在codeplex上找到

windows - 如何获取窗口的调整角的大小(以像素为单位)

有没有一种方法(API)可以获取调整角的像素大小(垂直和水平)?我指的是窗口每个角落的区域,您可以使用鼠标同时在两个方向(从左到右和从上到下)调整窗口大小。当您将鼠标悬停在窗口的角上并且鼠标光标是对角线调整光标时,您会知道您的鼠标光标在那里。谢谢编辑:示例:将鼠标悬停在一个大窗口的右边缘。从窗口的中间(垂直)开始,沿着边缘向上移动鼠标,直到水平尺寸光标变为对角线尺寸光标。如何通过询问操作系统来确定光标更改时该位置距窗口顶部多远。 最佳答案 我建议使用滚动条的大小。使用SM_CYHSCROLL和SM_CXVSCROLL调用GetSys

c++ - WinApi SetTimer 无法编译

我需要定时器每1秒启动一次功能。我试过SetTimer,我的代码:constUINT_PTRTIMER_ID=1000;DWORDDownloadThread(){SetTimer(NULL,TIMER_ID,1000,(TIMERPROC)DownloadSpeedCounter);/*somestuff*/}voidDownloadSpeedCounter(){/*somestuff*/}我无法编译此代码并得到errorC2440:'typecast':cannotconvertfrom'overloaded-function'to'TIMERPROC'也是类成员方法。

c++ - 我可以从语言首选项中获取代码页吗?

Windows似乎至少跟踪“当前语言环境”的四个维度:http://www.siao2.com/2005/02/01/364707.aspx默认用户区域设置默认系统区域设置默认用户界面语言默认输入区域我的大脑很痛,只是试图跟踪四个不同的语言环境到底有什么用......但是,我没有理解代码页和语言环境(或LCID,或语言ID)之间的关系,所有这些似乎都不一样(例如日语(日本)是LANGID=0x411位置代码1,但日本的代码页是932)。在Unicode和窄字符串之间转换时,如何配置我们的应用程序以使用用户所需的语言作为默认MBCS目标?也就是说,我们以前是一个MBCS应用。然后我们切换

windows - 在批处理文件中获取 uuidgen.exe 返回的值

我如何获取此代码来存储uuidgen.exe返回的值?我希望guid的值是一个Guid,而不是uuidgen.exe的路径。SETguid="C:\ProgramFiles\MicrosoftSDKs\Windows\v7.1\Bin\uuidgen.exe"ECHO%guid%pause 最佳答案 在批处理文件中,您需要在变量上使用双百分号,并正确引用uuidgen.exe的路径。以下在我本地计算机上的批处理文件中工作(注意不同版本的SDK)for/f%%iin('"C:\ProgramFiles\MicrosoftSDKs\Wi

c++ - WinAPI DestroyWindow 不工作

我有这门课:WNDCLASSEXActionButton::m_wndClass=CreateWndClass();ActionButton::ActionButton():m_function(NULL),m_parameters(NULL),m_window(){}ActionButton::~ActionButton(){DestroyWindow(m_window);}boolActionButton::DestroyButton(){returnDestroyWindow(m_window);}boolActionButton::Create(HWNDparent,intx,

c++ - CreateProcessAsUser() 不工作

我正在尝试使用我的服务启动GUI应用程序。我在VS2012上开发了该服务并在Windows7上运行。但是CreateProcessAsUser函数即使成功返回也不会启动应用程序。以下是我的代码:PHANDLEhToken=NULL;WTSQueryUserToken(WTSGetActiveConsoleSessionId(),hToken);if(!CreateProcessAsUser(hToken,NULL,//Nomodulename(usecommandline)pPath,//CommandlineNULL,//ProcesshandlenotinheritableNULL

c++ - 如何创建没有透明内容的完全透明窗口?

我试过这个:#includeLRESULTCALLBACKWndProc(HWNDhwnd,UINTmsg,WPARAMwParam,LPARAMlParam){switch(msg){caseWM_CLOSE:DestroyWindow(hwnd);break;caseWM_DESTROY:PostQuitMessage(0);break;caseWM_SIZE:caseWM_MOVE:caseWM_PAINT:{PAINTSTRUCTps;BeginPaint(hwnd,&ps);EndPaint(hwnd,&ps);return0;}caseWM_CTLCOLORSTATIC:{