Articles of winapi

删除包含斜线的密钥使用win apiregistry在Windows或使用Qt

我想实现Path SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\SharedDLLs和密钥名称: C:\Program Files\Common Files\Intel\WirelessCommon\TraceAPI.dll现在我想删除此密钥。 以下是我的尝试。 谢谢阅读。 我已经尝试过与Qt和本地API也。 由于keyname中的斜杠,Qt删除不起作用。 在本地API中,我可以打开密钥,但是当我试图删除密钥时,会出现ERROR_FILE_NOT_FOUND。 我已经尝试了所有可能的组合键和斜线。 void sharedDlls(QSettings::Format format) { QSettings settings("HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\SharedDLLs", format); HKEY hkey; LONG n = ::RegOpenKeyEx(HKEY_LOCAL_MACHINE, TEXT("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\SharedDLLs"), 0, KEY_ALL_ACCESS | KEY_WOW64_64KEY, &hkey); foreach (QString subkey, settings.allKeys() ) { //converting to double quoted slashes subkey = subkey.replace("/","\\\\"); if(clean) { // because of a slash it's impossible for qsettings […]

问题 – TCHAR作为LPARAM属于另一个进程/线程的窗口

所以我通过C书的例子来玩/执行与Windows窗口,有一些关于DLL注入部分,让我难以置信,我无法解决它。 我创build了一个属于另一个线程/进程的对话框,我试图发送它的TCHARvariables,以便它可以在某些函数中使用该var(函数和tchar都在同一个dll文件中) 所以当创build对话框并且坐在另一个线程中时,我会发送一条消息。 首先我声明tchar TCHAR finalpath[MAX_PATH]; 然后,我只是填充信息(我在dll线程中,而不是在对话框的线程中,让我也提到,我必须在dll线程中做到这一点,因为这只是填补所需的tchar(我需要得到dll的工作目录,并填写在tchar)) 所以,当我得到这个信息在我的tchar我想发送一个消息到对话框,并使用tchar作为LPARAM(wparam是hwnd顺便说一句) SendMessage(hWndDIPS, WM_APP, (WPARAM) lista, (LPARAM)finalpath); 之后,我在另一个线程对话框过程循环中做基本的功课… INT_PTR WINAPI Dlg_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { chHANDLE_DLGMSG(hWnd, WM_CLOSE, Dlg_OnClose); case WM_APP: SaveListViewItemPositions((HWND) wParam, (TCHAR)lParam); break; } return(FALSE); } 应该接受参数的函数(这个函数驻留在共享dll中,并且如上所述被程序调用,定义如下.. void SaveListViewItemPositions(HWND hWndLV,TCHAR sejv []){…} 我得到的编译器错误是 Error 7 error C2664: 'SaveListViewItemPositions' : cannot convert […]

ReadDirectoryChangesW和GetOverlappedResult

我调用ReadDirectoryChangesWasynchronous监视后台线程中的目录更改。 这是如何打开目录( basePath ),并启动“阅读”线程: m_hDIR = CreateFileW( basePath, FILE_LIST_DIRECTORY | GENERIC_READ, FILE_SHARE_WRITE | FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS | FILE_FLAG_OVERLAPPED, NULL); if (m_hDIR == INVALID_HANDLE_VALUE) throw CrException(CrWin32ErrorString()); //Start reading changes in background thread m_Callback = std::move(a_Callback); m_Reading = true; m_ReadThread = std::thread(&CrDirectoryWatcher::StartRead, this); 这是StartRead() :(注意: m_Reading是atomic<bool> ) void StartRead() { DWORD dwBytes = 0; FILE_NOTIFY_INFORMATION fni{0}; […]

夏令时更改绝对date

我正在尝试在闹钟应用程序中实施正确的DST调整处理。 所以我正在阅读DYNAMIC_TIME_ZONE_INFORMATION的描述,通过GetTimeZoneInformationForYear API检索当前的DST调整信息,并说明如下: DaylightDate : 在此操作系统上发生从标准时间到夏令时的转换时,包含date和本地时间的SYSTEMTIME结构。 如果时区不支持夏令时或呼叫者需要禁用夏令时,则SYSTEMTIME结构中的wMonth成员必须为零。 如果指定了此date,则必须指定此结构中的StandardDate成员。 否则,系统将假定时区数据无效,不会应用更改。 要select当月的正确date,请将wYear成员设置为零,将wHour和wMinute成员设置为转换时间,将wDayOfWeek成员设置为适当的工作日,并将wDay成员设置为指定星期几月份(1至5,其中5表示如果一周中的某一天不发生5次,则月份中的最终发生)。 如果wYear成员不为零,则转换date是绝对的; 它只会发生一次。 否则,这是每年发生的相对date。 我也正在检查世界各地观察到的当前DST调整情况 ,如果相对DST调整看起来相当简单,我不清楚如何通过DYNAMIC_TIME_ZONE_INFORMATION传达以下调整 – 只需一个绝对的月份和一天。 例如: Egypt —– DST Start: May 15 DST End: Last Friday September 或者这个: Iran —- DST Start: March 21–22 DST End: September 21–22 有谁知道如何做到这一点?

在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编码