Articles of winapi

如何更改taskmanager中的应用程序图标

我有一些Windows应用程序,可以更改他的图标,使用win apifunction SendMessage(hwnd, WM_SETICON, ICON_BIG, icon_handle); SendMessage(hwnd, WM_SETICON, ICON_SMALL, icon_handle); Shell_NotifyIcon(…); 它更改任务栏和托盘(任务栏通知区域)中的图标,但任务pipe理器中的图标仍未更改 。 如何更改taskmanager中的图标? 可能吗?

如何检查目录是否可写在win32 C / winapi中?

我知道两种不可靠的方法: _access() – 不适用于目录(只检查是否存在) CreateFile() – 虚拟商店(AFAIK) 最有用的将是一个代码示例,因为win32 ACL访问函数是非常复杂的。 请不要张贴链接到MSDN,我一直在那里,不能为我的生活找出我应该做的所有DACL,SACL和安全描述符 – 我工作在一个跨平台的应用程序这需要这个特定的function块,但是否则是平台不可知的。 比访问Windows ACL更简单的解决scheme比欢迎。 编辑:你可以安全地假设目录权限不会改变,而应用程序正在运行。

如何将表单放入帮助模式?

我正在尝试在Delphi 2010中将窗体变成“帮助模式”。 我有一个用户点击的button,我希望光标变成帮助光标,然后当用户点击一个控件时,显示控件的帮助 有我可以发送的窗口消息吗?

如何永久终止Windows资源pipe理器(“explorer.exe”进程)?

我正在使用以下代码来终止进程: function KillTask(ExeFileName: string): Integer; const PROCESS_TERMINATE = $0001; var ContinueLoop: BOOL; FSnapshotHandle: THandle; FProcessEntry32: TProcessEntry32; begin Result := 0; FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); FProcessEntry32.dwSize := SizeOf(FProcessEntry32); ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32); while Integer(ContinueLoop) <> 0 do begin if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) = UpperCase(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFile) = UpperCase(ExeFileName))) then Result := Integer(TerminateProcess( OpenProcess(PROCESS_TERMINATE, BOOL(0), FProcessEntry32.th32ProcessID), 0)); ContinueLoop := […]

在CPropertySheet / CDialog上使用带有WS_THICKFRAME的ModifyStyle

我有一个CPropertySheet。 当我使用 ModifyStyle(DS_MODALFRAME, WS_POPUP | WS_THICKFRAME | WS_MAXIMIZEBOX); 在一个OnCreate处理程序内一切都很好。 创build的窗口行为如预期,可resize。 当我使用相同的代码时,稍后在CPropertySheet :: OnInitDialog中打勾,这个代码只会显示正确的框架,当光标移到窗口边框上时,光标也会改变。 但是没有resize的function。 在OnInitDialog中使用时,也会发生CDialog。 创build窗口后,接缝不能更改某些标志。 有关于这个问题的更多信息吗?

“程序没有反应”是什么意思?

这个消息意味着什么,是否有一个“响应”Microsoft Windows状态查询的API? 我正在寻找技术答案。 谢谢 :)

在禁用wow64redirect之后,“找不到指定的程序”

我在64位系统上运行32位应用程序(Windows 7)我试图运行Windows备份位于:c:\ System32 \ sdclt.exe。 因为我作为一个32位进程运行,我必须禁用WOW64redirect(使用Wow64DisableWow64FsRedirection)。 问题是,禁用wow64redirect后,我得到“无法find指定的过程”错误。 我的猜测是,在禁用redirect时,sdclt.exe无法加载所有依赖的dll。 注意:1.这种情况只发生在我没有提高特权的情况下。 2.我设置“使用shell执行”为true,因为我想让用户使用我的应用程序没有提高priviliges。 2.编译为64位时不会发生此错误。

如果我使用SYSTEM用户令牌启动login用户进程,是否会危及系统的安全?

从安全angular度来看,我很好奇,做下面描述的有多糟糕? 我需要在本地服务的交互式login用户会话中启动一个高级进程。 这个过程仅仅作为一个消息的 GUI窗口存在,这个窗口对于用户来说是不可见的,每当这个过程开始时,它的类名是随机的。 如果我用本地服务的用户令牌运行这个过程,它会加快速度: //Pseudo-code, error checks are omitted for brevity //This code is run from a local-service with SYSTEM credentials PSID gpSidMIL_High; ConvertStringSidToSid(L"S-1-16-12288", &gpSidMIL_High); HANDLE hToken, hToken2; OpenProcessToken(GetCurrentProcess(), TOKEN_ALL_ACCESS, &hToken); DuplicateTokenEx(hToken, MAXIMUM_ALLOWED, NULL, SecurityIdentification, TokenPrimary, &hToken2); SetTokenInformation(hToken2, TokenSessionId, &userSessionID, sizeof(userSessionID)); DWORD dwUIAccess = 1; SetTokenInformation(hToken2, TokenUIAccess, &dwUIAccess, sizeof(dwUIAccess)); //Set "high" mandatory integrity level […]

我如何检测后台应用程序的窗口上的鼠标滚动事件

我怎样才能检测到从c + +应用程序的窗口滚动和移动事件,即使应用程序本身是不活动的(我的意思是最小化或隐藏)我可以得到键盘事件 for (int i = 8; i <= 190; i++) { if (GetAsyncKeyState(i) == -32767){ SaveLogs(i, "log.txt"); wcout << (wchar_t)i; } } /// … int SaveLogs(int key_stroke, char *file){ if ((key_stroke == 1) || (key_stroke == 2)) return 0; FILE *OUTPUT_FILE; OUTPUT_FILE = fopen(file, "a+"); /*cout << key_stroke << endl;*/ if (key_stroke == […]