2011-09-17 20 views
1

我通過C++使用app="http://..."參數(Chrome應用程序快捷方式)啓動Chrome。現在它似乎打開了大約400x800這是瘋了。我想打開它最大化或至少它記得它的大小。如何啓動通過shell執行最大化的Chrome?

有沒有辦法做到這一點?

+0

你是如何啓動它? ('CreateProcess','ShellExecute',...) –

+0

我正在使用'_popen'(Windows)。 – Tower

+0

@Matteo:但是如果您知道如何使用'CreateProcess'或其他方式工作,我很高興聽到! – Tower

回答

4

如果你不介意使用默認瀏覽器(在我看來,是最好的選擇),而不是強制使用Chrome瀏覽器,你可以簡單地說,你要最大化窗口ShellExecute指定打開的網址:

#include <windows.h> 
#include <Shellapi.h> 
// requires linking towards Shell32.lib 

// ... 

if(ShellExecute(NULL, "open", "http://www.stackoverflow.com", NULL, NULL, SW_SHOWMAXIMIZED)<=32) 
{ 
    /* an error occurred */ 
} 

我必須打開瀏覽器,和我有一個可變的路徑聞名。我也需要指定一個參數。這是一個問題嗎?

那麼,在這種情況下,最好使用CreateProcess

#include <windows.h> 

// ... 

// Assuming that the path to chrome is inside the chromePath variable 
// and the URL inside targetURL 
// Important: targetURL *must be* a writable buffer, not a string literal 
// (otherwise the application may crash on Unicode builds) 
PROCESS_INFORMATION processInformation; 
STARTUPINFO startupInfo; 
memset(&processInformation, 0, sizeof(processInformation)); 
memset(&startupInfo, 0, sizeof(startupInfo)); 
startupInfo.cb = sizeof(startupInfo); 
startupInfo.wShowWindow = SW_SHOWMAXIMIZED; 

BOOL result= CreateProcess(chromePath, targetURL, NULL, NULL, FALSE, NORMAL_PRIORITY_CLASS, NULL, NULL, &startupInfo, &processInformation); 

if(result) 
{ 
    WaitForSingleObject(processInformation.hProcess, INFINITE); 
    CloseHandle(processInformation.hProcess); 
    CloseHandle(processInformation.hThread); 
} 
else 
{ 
    // An error happened 
} 

請注意,您可以嘗試使用的dwX/dwY/dwXSize/dwYSize成員指定的窗口默認大小/ posizion STARTUPINFO結構,但我不確定Chrome是否遵守這些設置。

+0

我*必須*打開Chrome,並且我已經在變量中知道它的路徑,我還需要指定一個參數,這是一個問題嗎? – Tower

+0

您可以重新調整此代碼以使用它,但如果你有一個特定的路徑,最好使用'CreateProcess'並保持它的外殼,我會在2分鐘後發佈代碼 –

+0

好的,答案已更新 –

相關問題