2013-06-25 40 views
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()处理?

回答

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

+0

感谢的人,真的帮了大忙 – user2487868