English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
所有分類

純粹好玩~
一個exe執行檔
當他打開時自動DOS全螢幕
要怎麼寫呢???
各位大大請幫忙一下= ="

2005-04-24 16:12:54 · 2 個解答 · 發問者 Anonymous in 電腦與網際網路 程式設計

2 個解答

不知道你要的是哪一個, 所以把兩種都刊出來

要把DOS全螢幕化, 你要按alt+enter. 所以如果你要讓你的DOS自動全螢幕化的話, 你要發送alt+enter的訊號給你DOS的視窗. 以下是發送alt+enter的訊號給你DOS的視窗的code. 記得要include

INPUT in[4];

::ZeroMemory(in, sizeof(in));
in[0].type = in[1].type = in[2].type = in[3].type = INPUT_KEYBOARD;
in[0].ki.wVk = in[3].ki.wVk = VK_MENU;
in[1].ki.wVk = in[2].ki.wVk = VK_RETURN;
in[2].ki.dwFlags = in[3].ki.dwFlags = KEYEVENTF_KEYUP;
::SendInput(4, in, sizeof(INPUT));

要把DOS maximized, 你要按maximized的按鍵. 也就是說你要發送SC_MAXIMIZE的訊號給你DOS的視窗. 記得要include

DefWindowProc(hwnd, WM_SYSCOMMAND, SC_MAXIMIZE, 0);

以下的程式用哪個都行.

#include
#include
BOOL CALLBACK EnumWindowsProc(HWND hwnd, long lParam)
{
char *s;
char *name;
int len;

//name是現在執行的檔案名
name = (char *)lParam;
len = strlen(name) + 1;
s = new char[len];

//找出這個視窗的執行檔案名
GetWindowText(hwnd, (LPTSTR) s, len);
//找到相對的名字. 呼叫DefWindowProc
if (strcmp(name, s) == 0)
DefWindowProc(hwnd, WM_SYSCOMMAND, SC_MAXIMIZE, 0);
delete [] s;
return(TRUE);
}

int maximize()
{
char *name;
INPUT in[4];

::ZeroMemory(in, sizeof(in));
//4個鍵都是鍵盤輸入
in[0].type = in[1].type = in[2].type = in[3].type = INPUT_KEYBOARD;
//第1和第4個鍵是alt
in[0].ki.wVk = in[3].ki.wVk = VK_MENU;
//第2和第3個鍵是enter
in[1].ki.wVk = in[2].ki.wVk = VK_RETURN;
//第3和第4個鍵的情形是放開的
in[2].ki.dwFlags = in[3].ki.dwFlags = KEYEVENTF_KEYUP;
//把的訊號送給DOS的視窗
::SendInput(4, in, sizeof(INPUT));

//找出現在執行的檔案名
name = GetCommandLine();
//用EnumWindows來找現在正在執行的視窗
EnumWindows(EnumWindowsProc, (long) name);
return(0);
}


int main(int argc, char **argv)
{
maximize();
return(0);
}

懂不懂?不懂請再問
-------------------------------------------------------------
方糖巧克力, 當然. 不過要自動alt+enter才是主題... :)

2005-04-26 04:49:28 · answer #1 · answered by 7 · 0 0

送alt+enter
我覺得是最好的用法

2005-04-28 09:53:52 · answer #2 · answered by 蕃薯王 2 · 0 0

fedest.com, questions and answers