草庐IT

c++ - 使用 rundll32.exe 调试 native dll,无法加载符号

我正在编写一个nativedll,该dll将与rundll32.exe一起运行(这是我们客户的义务)。我使用VS的调试属性来定义:Command:c:\windows\system32\rundll32.exeCommandArgument:$(TargetPath),ENTRY_POINTENTRY_POINT是我的dll的导出函数,它遵循rundll32.exe接口(interface)。此设置调用我的函数,但不会加载任何符号,因此不会触发任何断点。我了解到我的函数只有在调用MessageBox入口后才会被调用。当我使用自己的容器应用程序时(只是一个exe调用Loadlibrary

c# - 为什么 C# 会将所有方法和类型标记为 System.Runtime.InteropServices.Charset.Ansi?

我今天在玩VisualStudio,用C#来PInvokeWin32API中的一些东西。那是我注意到这个标题的时候(请在新标签页中打开以查看完整尺寸)内容如下:AlthoughthecommonlanguageruntimedefaultisSystem.Runtime.InteropServices.CharSet.Auto,languagesmayoverridethisdefault.Forexample,bydefaultC#marksallmethodsandtypesasSystem.Runtime.InteropServices.CharSet.Ansi.为什么是ANSI

windows - 当前线程的 SetWindowsHookEx 返回 null

我在尝试为当前线程获取键盘钩子(Hook)时遇到问题。首先,我需要为所有线程获取键盘输入,所以我使用了:hHook=SetWindowsHookEx(WH_KEYBOARD_LL,mKeyboardProc,GetModuleHandle(NULL),0);这工作正常,但是当我尝试将dwThreadId参数(最后一个)设置为GetCurrentThreadId()时,SetWindowsHookEx返回NULL。可能是什么问题?谢谢。 最佳答案 WH_KEYBOARD_LL是一个全局钩子(Hook),如documentation中所

COM 引用计数

美好的一天。什么是初始化COM接口(interface)引用计数的正确方法?我看到很多例子,其中引用计数被初始化为1,但也看到了设置为0的例子。什么是差异? 最佳答案 您必须这样设置它,以便在调用最后一个Release()时对象自行处理。这通常意味着当您创建对象时,在您处理指向请求该对象的调用者的对象指针之前,它的引用计数必须为1。您是将引用计数器初始化为零然后调用AddRef()(在将指针移交给调用方之前)还是将其初始化为1而不是调用AddRef()通常由您决定。 关于COM引用计数,

c - 在窗口中的某些区域绘制矩形导致屏幕闪烁

在我的绘画功能中,我通过在屏幕上绘制黑色矩形来清除屏幕,然后绘制一组水平线和垂直线来显示一些图形。在我的应用程序中,x轴很长。所以我使用水平滚动来允许用户查看x轴上的数据。以下是如上所述绘制背景和线条的部分程序。caseWM_PAINT:HRGNhrgnUpdate=CreateRectRgn(0,0,0,0);PAINTSTRUCTps;if(GetUpdateRgn(m_hWnd,hrgnUpdate,FALSE)!=NULLREGION){if(BeginPaint(m_hWnd,&ps)){HBRUSHhBr;hBr=CreateSolidBrush(RGB(0,0,0));R

c - 从 C 中的 Windows 内核驱动程序读取注册表

我需要从注册表(最好)或文件中读取设置。该驱动程序是一个内核驱动程序,设置为启动类型设置为SYSTEM,因此所有服务和WinAPI不一定都可用。我正在尝试使用RtlQueryRegistryValues函数以便从注册表中读取单个String值,但无论我做什么,我似乎都得到相同的0xC0000034转换为STATUS_OBJECT_NAME_NOT_FOUND的错误代码.根据MSDN上提供的文档STATUS_OBJECT_NAME_NOT_FOUND从RtlQueryRegistryValues返回当路径参数与有效键不匹配时,或者设置了特定标志并且不满足特定于该标志的条件时。据我所知,注

windows - 为什么 Perl 的 Win32::ChangeNotify 在文件更改时触发两个事件?

我想在源或测试更改时自动运行prove,我正在使用Win32::ChangeNotify,但我不知道为什么即使是单个文件更改,while主体也会运行两次,我其实想监视所有更改,但只执行一次操作。requireWin32::ChangeNotify;$notify=Win32::ChangeNotify->new("./",1,"LAST_WRITE");while(my@events=$notify->wait){print@events,"----\n";$notify->reset;} 最佳答案 RaymondChen在Whyd

c# - 如何通过安装任何驱动程序来检查 Windows 是否繁忙?

我编写的程序通过dpinst.exe安装usb设备驱动程序。在程序启动时,我想通过搜索/安装/更新一些驱动程序来检查Windows是否忙。(我想避免的主要情况是在Windows搜索插入设备的驱动程序时启动dpinst.exe。)我如何检查? 最佳答案 解决方案是使用CMP_WaitNoPendingInstallEvents函数。示例here. 关于c#-如何通过安装任何驱动程序来检查Windows是否繁忙?,我们在StackOverflow上找到一个类似的问题:

c++ - 如何验证用户登录到域或本地

当我的软件运行时,我的软件大多数是获取windows用户的登录类型。通过域或本地登录。我需要在Windows中获取用户的登录类型。我认为这些API可以帮助我:GetComputerNameEx(ComputerNameDnsDomain,domainNameBuf,&bufSize);或GetUserName(sBuffer.GetBuffer(dwUsernameSize),&dwUsernameSize);或LookupAccountName(NULL,sUsername,(PSID)pSid,&dwSidSize,sBuffer.GetBuffer(dwDomainNameSiz

c++ - 在 Windows 7 64 位中未收到 WM_WTSSESSION_CHANGE

我一直在编写一个DLL,并试图获得有关用户锁定屏幕的通知。我发现WM_WTSSESSION_CHANGE将适合我的需要,但我无法在我的图书馆中阅读此消息,此外,当我用spyxx.exe监视应用程序时我可以看到WM_WTSSESSION_CHANGE消息已发布。任何人都可以看看并说出我做错了什么吗?一些基本list:设置WndProc回调:HHOOKhook=SetWindowsHookEx(WH_CALLWNDPROC,(HOOKPROC)__monitor,hInstance,GetCurrentThreadId());注册事件通知:WTSRegisterSessionNotific