【问题标题】:Launching default browser without the title bar启动没有标题栏的默认浏览器
【发布时间】:2013-06-25 12:15:54
【问题描述】:

我目前正在使用 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() 处理不是更好吗?

【问题讨论】:

    标签: c windows winapi browser window


    【解决方案1】:

    如果要删除标题栏,
    使用 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 功能更可靠、更安全

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-01
      • 1970-01-01
      • 2012-12-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多