Articles of winapi

在Windows 7上GetWindowRect太小

我试图解决的实际问题是,我想自动找出窗口边缘的大小。 如果你能find更好的办法,请用一切办法来回答,而不是这个。 为此,我决定截取testing窗口并测量边距。 这很简单,因为我认为没有利润率会是明亮的粉红色,但我承认这是一个黑客。 我使用GetWindowRect ( py )来获取边界框, PIL抓取屏幕截图并剪裁到边界框。 问题是,当作物正常运行时,边界框不准确 。 Windows 7“剪切工具”获得正确的尺寸 。 我怎么能这样做?

如何以编程方式更改默认的声音播放设备?

如何更改默认的默认audio设备播放和录制在Vista中编程? 有没有像XP中的声音pipe理器的任何registry设置? 它是哪个API?

这些奇怪的环境variables是什么?

我使用GetEnvironmentString()来获取程序的环境variables。 每个程序都有这样的结果: =::=::\ 我不知道这是什么意思? 这里是代码: LPWCH lpEnvString=GetEnvironmentStringsW(); LPWSTR lpszVariable=(LPWSTR)lpEnvString; while (*lpszVariable) { wprintf(L"%s\n",lpszVariable); lpszVariable+=wcslen(lpszVariable)+1; } FreeEnvironmentStringsW(lpEnvString); 另外,如果我们开始列出这些variables,我们会看到如下内容: =::=::\ =C:=C:\Users\username\value =ExitCode=00000001 ALLUSERSPROFILE=C:\ProgramData APPDATA=C:\Users\artik\AppData\Roaming CommonProgramFiles=C:\Program Files (x86)\Common Files CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files CommonProgramW6432=C:\Program Files\Common Files … 另一方面, getenv("=ExitCode")或getenv("=C:")返回NULL。 你能否提供这个“function”的适当的文档,例如getenv()忽略这样的string,以及如何处理这些值?

使用Python将图表从Excel导出为图像

我一直试图从Excel中将图表导出为Python中的图像文件(JPG或ING)。 我在看WIn32com。 这是我到现在为止。 import win32com.client as win32 excel = win32.gencache.EnsureDispatch("Excel.Application") wb = excel.Workbooks.Open("<WORKSHEET NAME>") r = wb.Sheets("<SHEET NAME>").Range("A1:J50") # Here A1:J50 is the area over which cart is r.CopyPicture() 这是我卡住的地方。 我需要现在将所选范围复制到一个文件。 任何帮助或指向文件的指针可以帮助我很多。 我已经基于下面的VBA脚本build模上述代码: Sub Export_Range_Images() ' ========================================= ' Code to save selected Excel Range as Image ' ========================================= Dim oRange As Range Dim oCht As […]

在Windows中显示文件的属性对话框

有没有一种简单的方法来显示Windows中使用Python的文件的属性对话框? 我试图显示相同的窗口,当您在资源pipe理器中右键单击文件时popup,并select属性。

我怎样才能从代码模拟鼠标事件?

我想用Win32 API模拟鼠标事件; 我该怎么做? 我想要做的是在最基本的层面上模拟事件,系统只有事件types和坐标的级别,还没有计算出它必须把它传递给哪个窗口。 我不知道这是如何工作的。 无论哪种方式,我都需要帮助。 我会不得不插手驾驶员? 为了明确我的要求,我不想针对任何窗口,我只想让系统认为鼠标被用户点击或移动。 我将在C编码

从Windows 8桌面应用程序获取Microsoft帐户ID

试图找出用Microsoft帐户login到Windows 8的用户的活动电子邮件/标识,假设它不是一个本地帐户,他们被authentication为。 试图从WPF桌面C#应用程序中find,而不是Windowsapp store应用程序 发现Live SDK有潜在的相关性, 比如我的快捷方式 ,但是我不确定这个API可以用于一个完整的.NET应用程序吗?

我如何获得写入registry项的权限?

我正在尝试在registry的HKLM部分下编写一些registry项。 我以类似于我见过的一些MSDN示例的方式使用RegCreateKeyEx()和RegSetValueEx()。 但是,RegSetValueEx()调用失败,出现错误5 FormatMessage()说是“访问被拒绝” 我想我需要请求提升的权限,但我不知道需要这样做的API调用? 这是我的代码: HKEY hk; DWORD dwDisp; LONG result = RegCreateKeyEx(HKEY_LOCAL_MACHINE, _T("Software\\MyApp"), 0, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, &hk, &dwDisp); if(result == ERROR_SUCCESS) { BYTE value[] = "Hello world!"; result = RegSetValueEx(hk, _T("MyValue"), 0, REG_EXPAND_SZ, value, strlen((char*)value)+1); if(result != ERROR_SUCCESS) { DBG_PRINT2("RegSetValueEx failed with code: %d\n", result); } RegCloseKey(hk); }

SendMessage(HWND_BROADCAST挂起

当我使用HWND_BROADCAST的SendMessage函数时,应用程序挂起。 长时间没有应用程序的反应。 谁能解释为什么?

复制文件而不使用Windows文件caching

任何人都知道将文件从pathA复制到pathB并抑制Windows文件系统caching的方法? 典型用途是将USB驱动器或服务器上的大文件复制到本地计算机。 如果文件真的很大,Windows似乎将所有东西都交换出来,例如2GiB。 喜欢在C#中的例子,但我猜这将是一个Win32调用,如果可能的话。