Tag: winapi

如何获取当前活动的Windows资源管理器窗口的HWND?

我知道如何获得桌面的HWND: GetDesktopWindow() 。 但是我找不到一个返回当前活动的 Windows资源管理器主窗口的HWND的函数。 如何以安全可靠的方式获取当前活动的Windows资源管理器窗口的HWND?

从Win32从C或Delphi获取BIOS UUID

VMWare配置文件包含类似的行 uuid.bios = “56 4d ed cf 3c cd 63 20-53 78 95 86 26 92 22 c8” 而afaik大多数(每个?)物理BIOS都有这样的UUID。 是否有任何Windows API调用来获取此标识符? 我已经尝试了WMI类Win32_ComputerSystemProduct.UUID属性,但该值与uuid.bios值不同。 HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Cryptography \ MachineGuid的值也不同。

如何编写用于调用Win32函数的通用C函数?

为了允许从脚本语言(用C编写)访问Win32 API,我想编写如下函数: void Call(LPCSTR DllName, LPCSTR FunctionName, LPSTR ReturnValue, USHORT ArgumentCount, LPSTR Arguments[]) 一般来说,它会调用任何Win32 API函数。 (LPSTR参数基本上用作字节数组 – 假设它们的大小正确,以便在函数外部采用正确的数据类型。另外我认为需要一些额外的复杂性来区分指针和非指针参数但我为了这个问题的目的,我忽略了这一点。 我遇到的问题是将参数传递给Win32 API函数。 因为这些是stdcall我不能使用varargs所以’Call’的实现必须提前知道参数的数量,因此它不能是通用的… 我想我可以使用汇编代码(通过循环遍历参数,将每个参数推送到堆栈)来实现这一点但是在纯C中这是可能的吗? 更新:我已经标记了现在已经接受的“不可能”答案。 如果基于C的解决方案曝光,我当然会改变这一点。 更新: ruby / dl看起来可能使用合适的机制实现。 任何有关这方面的细节将不胜感激。

在使用C / C ++ for windows进行开发时,省略msvcr100.dll?

是否有可能在Windows的C / C ++中开发而不是与msvcr100.dll链接? 我知道这是Windows的标准c库,但我想知道如果我没有安装Visual Studio或Redistributable软件包,我的计算机上的所有程序都可以运行?

C Win32:从HBITMAP保存.bmp图像

我正在使用framegrabber,需要从计算机内存中获取图像并将其保存在图像文件中。 在尝试了几天后,我最终得到了以下2个函数,它们创建了一个文件,Windows操作系统能够运行.bmp文件,但位图文件是黑色的(图像大小为900KB,640 * 480)。 有没有人知道为什么,图片是黑色的? 这里有两个function: LPSTR CreateBMP( HWND hAppWnd, int nImageType ) { void * pWinGBits = NULL; int i; Z_BITMAPINFO zWinGHeader; // bitmapinfo for cerating the DIB // create DC for bitmap. hDCBits = CreateCompatibleDC( ghDCMain ); switch ( nImageType ) { case bayer_filter: zWinGHeader.bmiHeader.biSize = sizeof( BITMAPINFOHEADER ); zWinGHeader.bmiHeader.biPlanes = 1; zWinGHeader.bmiHeader.biClrImportant […]

如何通过HWND句柄在另一个进程中更改TDateTimePicker控件中当前选择的日期?

我正在编写一个自定义模块来使用专有软件。 (该软件已经停产,我没有源代码。)我的模块将作为一个单独的进程运行。 其目标是通过该专有软件实现操作自动化。 为此,我需要能够在TDateTimePicker控件中选择特定日期。 我知道这是一个Delphi控件,但就我对Delphi / Pascal的了解而言。 我可以找到这个控件的HWND句柄。 所以我的问题 – 有没有办法只在外部进程(使用WinAPI)的句柄中设置该控件的日期?

如何使用c ++发送unicode密钥(keybd_event)

我的朋友正在学习挪威语,我想创建一个全局热门密钥程序,它可以发送密钥,例如 æ ø å 我的问题是keybd_event函数不允许我发送那些密钥,我似乎只限于虚拟密钥代码是否有我可以使用的另一个function或发送它们的一些技巧?

在调试器下运行时,AssignProcessToJobObject失败并显示“Access Denied”错误

您执行AssignProcessToJobObject并且它失败并显示“拒绝访问”,但仅当您在调试器中运行时才会失败。 为什么是这样?

什么是特权教育?

我添加了一些编译干净,刚收到此Windows错误的代码: ————————— (MonTel Administrator) 2.12.7: MtAdmin.exe – Application Error ————————— The exception Privileged instruction. (0xc0000096) occurred in the application at location 0x00486752. 我即将继续寻找一个bug,我期待它是一件愚蠢的事情,我已经完成了这件事,恰好产生了这个消息。 代码编译干净,没有错误或警告。 EXE文件的大小已增长到1,454,132字节并包含指向ODCS.lib链接,但它是纯粹的C到Win32 API,DEBUG打开(在Windows 2000上的P4上运行)。

‘安全’DLL注入

抱歉,这不是一个非常好的问题。 我有一个程序需要在从资源管理器打开文件时发出警报(即调用ShellExecute(A / W))。 不幸的是,Microsoft删除了COM接口(IShellExecuteHook),它允许您在Vista中挂起这些事件,因为旧版代码可能会因更改而导致崩溃。 有一种解决方法可以重新启用此function,但它不再有效。 我做了一些研究,看起来捕获ShellExecute调用的唯一方法是将调用重新路由到shell32.dll。 目前,我正在考虑将自己的DLL注入到资源管理器进程中,然后将ShellExecute的IAT条目复制到我的DLL中的某些地址分配,最后修改ShellExecute的IAT条目以指向我的函数,该函数将通知打开文件并跳转到原始ShellExecute函数的程序,我们之前存储了它的地址。 我最关心的是防病毒。 他们会关心我注入探险家吗? 他们会关心我正在修改IAT吗? 另一个问题是这是否安全; 是否有可能(或者更可能)探险家的安全权限不允许通过CreateRemoteThread注入? 如果是这样,有没有更好的方法来进行这种注射? 有没有更好的方法来做到这一点? 编辑:对于将来遇到此问题的任何人,explorer.exe没有shell32.dll的IAT; 它有一个标题,但thunk充满了垃圾值,所以没有办法(据我所知)检索任何导入函数的条目。 看起来代码隧道是解决这个问题的唯一方法。