启动没有标题栏的默认浏览器

时间:2013-06-25 12:15:54

标签: c windows winapi browser window

我目前正在开发一个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()处理不是更好吗?

1 个答案:

答案 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是更可靠和更安全的功能