0

我目前正在使用 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()吗?

4

1 回答 1

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;
} 

这两个功能都可以完成这项工作,但 CreateProcess 与 ShellExecute 不同,它更可靠、更安全

于 2013-06-25T14:10:06.640 回答