我目前正在开发一个C ++应用程序,在启动时,会在没有标题栏的窗口中打开用户的默认浏览器(特别是我想要摆脱右上角的所有按钮)。我用这段代码检查可执行文件路径:
HKEY Key;
LPCTSTR Key2 = TEXT("http\\shell\\open\\command");
RegOpenKeyEx(HKEY_CLASSES_ROOT, Key2, 0L, KEY_ALL_ACCESS, &Key);
char Path[256];
DWORD dwSize = 256;
RegQueryValueEx(Key, NULL, NULL, NULL, (LPBYTE)Path, &dwSize);
LPCSTR browser=Path;
然后将其传递给CreateProcess()
。
我的问题是:如何删除此窗口的标题栏,使用ShellExecute并使用FindWindow()
处理不是更好吗?
答案 0 :(得分:0)
如果要删除标题栏,
使用FindWindow()获取目标句柄。
在目标窗口中更改样式属性并进行修改。
#include <windows.h>
#include <stdio.h>
int main(void)
{
HWND hWnd = NULL;
LONG lStyle;
hWnd = FindWindow(0, "Google - Windows Internet Explorer");
lStyle = GetWindowLong(hWnd, GWL_STYLE);
lStyle &= ~WS_CAPTION; /*remove WS_CAPTION style */
SetWindowLong(hWnd, GWL_STYLE, lStyle);
if(hWnd!=NULL)
SetWindowPos(hWnd, HWND_TOP, 0,0,0,0, SWP_FRAMECHANGED ); /*Changes style in your window */
return 0;
}
这两个功能都可以完成这项任务,但与ShellExecute不同,CreateProcess是更可靠和更安全的功能