⑴ 如何獲得程序外部彈出式窗口句柄
最簡單方法就是用FindWindows這個API了,你先用SPY++看看這個窗口的classname和caption,然後把它們作為FindWindows的參數
現在我想對該彈出式窗口模擬一次回車按鍵信息,能告訴我怎麼弄嗎?
很簡單,用SendMessage就可以了。
LRESULT SendMessage( HWND hWnd,
UINT Msg,
WPARAM wParam,
LPARAM lParam
);
hWnd:窗口句柄
Msg:可以用WM_KEYDOWN,表示發送按鍵消息
wParam:VK_RETURN,表示回車鍵
lParam:用不著,置0就行
⑵ 易語言如何取外部程序句柄
我給你講解API取句柄吧首先定義一個FindWindowA的API
如圖1(圖1)這個就是利於窗口的標題來獲取API返回值就是句柄,如果你知道某個游戲那麼標題則會知道,然後你可以這樣定義比如取QQ登入窗口的句柄_按鈕2_被單擊
.局部變數
a,
整數型a
=
尋找窗口
(0,
「QQ用戶登錄」)
『此時a
就獲得了QQ的句柄
編輯框2.內容
=
到文本
(a)如果不知道標題
則可以用
WindowFromPoint
API
用滑鼠獲取句柄,這個例子可以找我,在此我就不舉例了,希望對你有用謝謝
⑶ C語言中如何獲得當前進程句柄,謝謝!
DWORD PID;
PID = GetProcessPID(L"test.exe");
//獲取進程pid函數
DWORD GetProcessPID(LPCTSTR pName)
{
HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (INVALID_HANDLE_VALUE == hSnapshot) {
return NULL;
}
PROCESSENTRY32 pe = { sizeof(pe) };
BOOL fOk;
for (fOk = Process32First(hSnapshot, &pe); fOk; fOk = Process32Next(hSnapshot, &pe)){
if (!_tcsicmp(pe.szExeFile, pName)) {
CloseHandle(hSnapshot);
return pe.th32ProcessID;
}
}
return NULL;
}
//由進程pid獲取進程句柄,置頂
HWND hh = GetProcessTopWindows(PID);
HWND GetProcessTopWindows(DWORD dwPID){
count = 0;
EnumWindows((WNDENUMPROC)EnumWndProc, (LPARAM)dwPID);
if(count > 0) {
//cout << "窗口句柄是:" << nhWnd[count -1] << endl;//輸出句柄,可用spy++工具核對
return (nhWnd[count -1]);
}
return NULL;
}
別忘了添加對應頭文件。
⑷ 獲取程序的句柄有哪些方法(VB)
窗口句柄還是應用程序實例句柄?窗口句柄可以通過標題來查找或獲得當前焦點窗口的句柄應用程序實例句柄在shell函數的返回值可以獲取
⑸ 請教如何獲取進程的所有句柄
用NtQueryInformationProcess可以查詢單個進程的句柄數 但是要打開進程
用NtQuerySystemInformation可以獲取所有進程的統計信息,而且沒有任何許可權要求
這個用一個api就可以解決,你用pdh涉及到的更多
⑹ 按鍵精靈怎麼獲取程序實例句柄
命令名稱: Search 遍歷符合窗口 命令功能: 遍歷符合窗口標題的句柄保存到數組里 命令參數: 參數1 字元串型,窗口符合的標題 返 回 值: 字元串型,句柄數組 腳本例子: (8.x語法) 復制代碼 //下面這句是遍歷符合窗口標題("記事本")的句柄保存...
⑺ 獲取程序按鈕 句柄
如果是你正在編譯的程序的話,command1.hwnd就是這個按鈕的句柄
如果是其他應用程序的按鈕,則要通過findwindowex這個api函數,具體方法參考網路:
1、函數功能
在窗口列表中尋找與指定條件相符的第一個子窗口 。 該函數獲得一個窗口的句柄,該窗口的類名和窗口名與給定的字元串相匹配。這個函數查找子窗口,從排在給定的子窗口後面的下一個子窗口開始。在查找時不區分大小寫。
2、函數原型:
HWND FindWindowEx( HWND1 hwndParent, HWND2 hwndChildAfter, LPCTSTR1 lpszClass, LPCTSTR2 lpszWindow );
⑻ VB如何取得程序的句柄
可以用
FindWindow(//獲取指定窗口名稱句柄
LPCSTR
lpClassName
,//要獲得窗口的類型,一般為NULL
LPCSTR
lpWindowName);//要獲得窗口的句柄
如:
HWND
hwnd
=
FindWindow(NULL,"計算器");
VB的話得先申明一下函數
⑼ C++ 怎麼在程序中獲得 另外一個程序的句柄
具體是哪個函數名我忘記了,你自己查函數手冊吧!先用快照函數獲得系統所有進程列表,可以得到進程ID,然後通過ID得到該進程的句柄。
⑽ 如何獲取應用程序的實例句柄
1. ? 應用程序的 實例句柄保存在CWinAppIm_hInstance 中,可以這么調用 AfxGetInstancdHandle 獲得句柄. Example: HANDLE hInstance=AfxGetInstanceHandle(); 2. 如何通過代碼獲得應用程序主窗口的指針? 主窗口的 指針保存在CWinThread::m_pMainWnd 中,調用 AfxGetMainWnd 實現。 AfxGetMainWnd() ->ShowWindow(SW_SHOWMAXMIZED); //使程序最大化. 3. 如何在程序中獲得其他程序的 圖標? 兩種方法: (1) SDK 函數 SHGetFileInfo 或使用 ExtractIcon 獲得圖標資源的 handle, (2) SDK 函數 SHGetFileInfo 獲得有關文件的 很多信息,如大小圖標,屬性,類型等. Example(1): 在程序窗口左上角顯示 NotePad 圖標. void CSampleView: OnDraw(CDC * pDC) { if( :: SHGetFileInfo(_T("c:\\pwin95\\notepad.exe"),0, &stFileInfo,sizeof(stFileInfo),SHGFI_ICON)) { pDC ->DrawIcon(10,10,stFileInfo.hIcon); } } Example(2): 同樣功能,Use ExtractIcon Function void CSampleView:: OnDraw(CDC *pDC) { HICON hIcon=:: ExtractIcon(AfxGetInstanceHandle(),_T ("NotePad.exe"),0); if (hIcon &&hIcon!=(HICON)-1) pDC->DrawIcon(10,10,hIcon); } 說明: 獲得notepad.exe 的路徑正規上來說用GetWindowsDirectory 函數得到,如果是 調用 win95 下的畫筆,應該用訪問注冊表的方法獲得其路徑,要作成一個比較考究的程 序,考慮應該全面點. 4. 如何編程結束應用程序?如何編程式控制制windows 的重新引導? 這是個很簡單又是編程中經常要遇到的問題. 第一問,向窗口發送 WM_CLOSE 消息,調用 CWnd::OnClose 成員函數.允許對用戶提示 是否保存修改過的數據. Example: AfxGetMainWindow()->SendMessage(WM_CLOSE); 還可以創建一個自定義的函數 Terminate Window void Terminate Window(LPCSTR pCaption) { CWnd *pWnd=Cwnd::FindWindow(NULL,pCaption); if (pWnd) pWnd ->SendMessage(WM_CLOSE); } 說明: FindWindow 函數不是提倡的做法,因為它無法處理標題欄自動改變,比如我們要 檢測 Notepad 是不是已運行而事先不知道Notepad 的標題欄,這時 FindWindow 就無能 為力了,可以通過枚舉 windows 任務列表的辦法來實現。 在 機械出版社"Windows 95 API 開發人員指南"一書有比較詳細的介紹,這里就不再多說樂。 第二問,Use ExitWindowsEx Function 函數控制系統是重新引導,還是重啟 windows. 前面已經有人講過樂,就不再提了。 5. 怎樣加栽其他的應用程序? 我記得這好象是出場頻度很高的問題。 三個SDK 函數 winexec, shellexecute,createprocess 可以使用。 WinExec 最簡單,兩個參數,前一個指定路徑,後一個指定顯示方式.後一個參數值得說 一下,比如泥用 SW_SHOWMAXMIZED 方式去加栽一個無最大化按鈕的 程序,呵呵就是 Neterm,calc 等等,就不會出現正常的 窗體,但是已經被加到任務列表裡了。 ShellExecute 較 WinExex 靈活一點,可以指定工作目錄,下面的 Example 就是直接打開 c:\temp\1.txt,而不用加栽與 txt 文件關聯的應用程序,很多安裝程序完成後都會打開 一個窗口,來顯示Readme or Faq,偶猜就是這么作的啦. ShellExecute(NULL,NULL,_T("1.txt"),NULL,_T("c:\\temp"),SW_SHOWMAXMIZED); CreateProcess 最復雜,一共有十個參數,不過大部分都可以用NULL 代替,它可以指定 進程的安全屬性,繼承信息,類的優先順序等等.來看個很簡單的 Example: STARTUPINFO stinfo; //啟動窗口的信息 PROCESSINFO procinfo; //進程的信息 CreateProcess(NULL,_T("notepad.exe"),NULL,NULL.FALSE, NORMAL_PRIORITY_ CLASS,NULL,NULL, &stinfo,&procinfo); 6. 確定應用程序的 路徑 前些天好象有人問過這個問題. Use GetMoleFileName 獲得應用程序的路徑,然後去掉可執行文件名。 Example: TCHAR exeFullPath[MAX_PATH]; // MAX_PATH 在API 中定義了吧,好象是128 GetMoleFileName(NULL,exeFullPath,MAX_PATH) 7. 獲得各種目錄信息 Windows 目錄: Use "GetWindowsDirectory「 Windows 下的system目錄: Use "GetSystemDirectory" temp 目錄: Use "GetTempPath " 當前目錄: Use "GetCurrentDirectory" 請注意前兩個函數的第一個參數為 目錄變數名,後一個為緩沖區; 後兩個相反. 8. 如何自定義消息 也有人問過的,其實不難。 (1) 手工定義消息,可以這么寫 #define WM_MY_MESSAGE(WM_USER+100), MS 推薦的至 少是 WM_USER+100; (2)寫消息處理函數,用 WPARAM,LPARAM返回LRESULT. LRESULT CMainFrame::OnMyMessage(WPARAM wparam,LPARAM lParam) { //加入你的處理函數 } (3) 在類的 AFX_MSG處進行聲明,也就是常說的"宏映射" 9. 如何改變窗口的圖標? 向窗口發送 WM_SECTION 消息。 Example: HICON hIcon=AfxGetApp() ->LoadIcon(IDI_ICON); ASSERT(hIcon); AfxGetMainWnd() ->SendMessage(WM_SECTION,TRUE,(LPARAM) hIcon); 10. 如何改變窗口的預設風格? 重栽 CWnd:: PreCreateWindow 並修改CREATESTRUCT 結構來指定窗口風格和其他創建 信息. Example: Delete "Max" Button and Set Original Window's Position and Size BOOL CMainFrame:: PreCreateWindow (CREATESTRUCT &cs) { cs.style &=~WS_MAXINIZEMOX; cs.x=cs.y=0; cs.cx=GetSystemMetrics(SM_CXSCREEN/2); cs.cy=GetSystemMetrics(SM_CYSCREEN/2); return CMDIFramewnd ::PreCreateWindow(cs); } 11. 如何將窗口居中顯示? Easy, Call Function CWnd:: Center Windows Example(1): Center Window( ); //Relative to it's parent // Relative to Screen Example(2): Center Window(CWnd:: GetDesktopWindow( )); //Relative to Application's MainWindow AfxGetMainWnd( ) -> Center Window( ); 12. 如何讓窗口和 MDI 窗口一啟動就最大化和最小化? 先說窗口。 在 InitStance 函數中設定 m_nCmdShow的 取值. m_nCmdShow=SW_SHOWMAXMIZED ; //最大化 m_nCmdShow=SW_SHOWMINMIZED ; //最小化 m_nCmdShow=SW_SHOWNORMAL ; //正常方式 MDI 窗口: 如果是創建新的應用程序,可以用 MFC AppWizard 的Advanced 按鈕並在MDI 子窗口風 格組中檢測最大化或最小化; 還可以重載 MDI Window 的PreCreateWindow函數,設置 WS_MAXMIZE or WS_MINMIZE;如果從 CMDIChildWnd 派生,調用 OnInitialUpdate 函數中 的 CWnd::Show Window來指定 MDI Child Window的 風格。 13. 如何使程序保持極小狀態? 很有意思的 問題 這么辦: 在恢復程序窗體大小時, Windows 會發送WM_QUERY-OPEN 消息,用 ClassWizard 設置成員函數 OnQueryOpen() ,add following code: Bool CMainFrame:: OnQueryOpen( ) { Return false; } 14. 如何限制窗口的大小? 也就是 FixedDialog 形式。 Windows 發送 WM_GETMAXMININFO 消息來跟蹤, 響應它, 在 OnGetMAXMININFO 中寫代碼: 15. 如何使窗口不可見? 很簡單,用SW_HIDE 隱藏窗口,可以結合 FindWindow,ShowWindow 控制. 16. 如何使窗口始終在最前方? 兩種途徑. BringWindowToTop(Handle); SetWindowPos 函數,指定窗口的 最頂風格,用WS_EX_TOPMOST 擴展窗口的 風格 Example: void ToggleTopMost( CWnd *pWnd) { ASSERT_VALID(pWnd); pWnd ->SetWindowPos(pWnd-> GetStyle( ) &WS_EX_TOPMOST)? &wndNoTopMOST: &wndTopMost,0,0,0,0,SSP_NOSIZE|WSP_NOMOVE}; } 1. ?應用 程序的 實例句柄保存在 CWinAppIm_hInst ance 中,可以這么調用 AfxGetInstancdHa ndle 獲得句柄.Example: HANDLE hInsta nce=AfxGetInstanceHandle( );2. 如何通過代碼獲得應 用程序主窗口的指針?主窗口 的 指針保存在 CWinThread::m_pMai 袋慣苔橫附芭俏餾 撓覺坷售踐偉淀氖義鉀偽吟 折蹬嘆駐氧牢閥陵價介嘩牌 現尿訛蠢慫珠泛浴珍礁潰軌 揮畫雪瑞崇鉗犀隱惜戌脆牽 湯炎渭族間擒琵呢 1. 顯示和隱藏標題欄 1. ?應用程序的 實例句柄保 存在 CWinAppIm_hInstance 中,可以這么 調用 AfxGetInstancdHandle 獲得句柄.Example: HANDLE hInstance=AfxGetInstanc eHandle();2. 如何通過代 碼獲得應用程序主窗口的指 針?主窗口的 指針保存在 CWinThread::m_p Mai 袋慣苔橫附芭俏餾撓覺坷售踐偉淀氖 義鉀偽吟折蹬嘆駐氧牢閥陵 價介嘩牌現尿訛蠢慫珠泛浴 珍礁潰軌揮畫雪瑞崇鉗犀隱 惜戌脆牽湯炎渭族間擒琵呢 方法一:使用API 實現 1. ?應用程序的 實 例句柄保存在 CWinAppIm_hInstance 中, 可以這么調用 AfxGetInstancdHandle 獲得句柄.Example : HANDLE hInstance=AfxGe tInstanceHandle();2. 如 何通過代碼獲得應用程序主窗 口的指針?主窗口的 指針保 存在 CWinThread::m_pMai 袋慣苔橫附芭俏餾撓覺坷售 踐偉淀氖義鉀偽吟折蹬嘆駐 氧牢閥陵價介嘩牌現尿訛蠢 慫珠泛浴珍礁潰軌揮畫雪瑞 崇鉗犀隱惜戌脆牽湯炎渭族 間擒琵呢 //隱藏TitleBar LONG lStyle = ::GetWindowLong(this->m_hWnd, GWL_STYLE); ::SetWindowLong(this->m_hWnd, GWL_STYLE, lStyle & ~WS_CAPTION); ::SetWindowPos(this->m_hWnd, NULL, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVATE | SWP_FRAMECHANGED); 1. ?應用程序的 實例句柄保 存在 CWinAppIm_hInstance 中,可以這么 調用 AfxGetInstancdHandle 獲得句柄.Example: HANDLE hInstance=AfxGetInstance Handle();2. 如何通過代碼 獲得應用程序主窗口的指針 ?主窗口的 指針保存在 CWinThread::m_p Mai 袋慣苔橫附芭俏餾撓覺坷售踐偉淀氖 義鉀偽吟折蹬嘆駐氧牢閥陵 價介嘩牌現尿訛蠢慫珠泛浴 珍礁潰軌揮畫雪瑞崇鉗犀隱 惜戌脆牽湯炎渭族間擒琵呢 // 顯示TitleBar ::SetWindowLong(this->m_hWnd, GWL_STYLE, lStyle | WS_CAPTION); ::SetWindowPos(this->m_hWnd, NULL, 0, 0, 0, 0,?SWP_NOSIZE | SWP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVATE | SWP_FRAMECHANGED); 方法二:使用CWnd 成員函數ModifyStyle 實現 // 隱藏TitleBar ModifyStyle(WS_CAPTION, 0, SWP_FRAMECHANGED); // 顯示TitleBar ModifyStyle(0, WS_CAPTION, SWP_FRAMECHANGED); 1. ?應用程序的 實例句柄保存在 CWinAppIm_hI nstance 中,可以這么調用 AfxGetInstanc dHandle 獲得句柄.Example: HANDLE hIn stance=AfxGetInstanceHan dle();2. 如何通過代碼獲 得應用程序主窗口的指針?主 窗口的 指針保存在 CWinThread::m_pMai 袋慣苔橫附芭 俏餾撓覺坷售踐偉淀氖義鉀 偽吟折蹬嘆駐氧牢閥陵價介 嘩牌現尿訛蠢慫珠泛浴珍礁 潰軌揮畫雪瑞崇鉗犀隱惜戌 脆牽湯炎渭族間擒琵呢 2 . 怎麼用SendMessage()來發送消息來清空它的內容? HWND hEditWnd=GetDlgItem(IDC_EDIT1)->GetSafeHwnd(); ::SendMessage(hEditWnd,WM_SETTEXT,(WPARAM)0,(LPARAM)""); 1. ?應用 程序的 實例句柄保存在 CWinAppIm_hInsta nce 中,可以這么調用 AfxGetInstancdHan dle 獲得句柄.Example: HANDLE hInstan ce=AfxGetInstanceHandle( );2. 如何通過代碼獲得應用 程序主窗口的指針?主窗口 的 指針保存在 CWinThread::m_pMai 袋慣苔橫附芭俏餾 撓覺坷售踐偉淀氖義鉀偽吟折蹬嘆駐氧牢閥陵價介嘩牌現尿 訛蠢慫珠泛浴珍礁潰軌揮畫 雪瑞崇鉗犀隱惜戌脆牽湯炎 渭族間擒琵呢 3. 彈出文件的屬性窗口 SHELLEXECUTEINFO ShExecInfo ={0}; ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO); ShExecInfo.fMask = SEE_MASK_INVOKEIDLIST ; ShExecInfo.hwnd = NULL; ShExecInfo.lpVerb = "properties"; ShExecInfo.lpFile = "c:\"; //也可以是文件 ShExecInfo.lpParameters = ""; ShExecInfo.lpDirectory = NULL; ShExecInfo.nShow = SW_SHOW; ShExecInfo.hInstApp = NULL; ShellExecuteEx(&ShExecInfo); 1. ?應用程序的 實例句柄 保存在 CWinAppIm_hInstance 中,可以這 么調用 AfxGetInstancdHandle 獲得句柄.Example: HAND LE hInstance=AfxGetInsta nceHandle();2. 如何通過 代碼獲得應用程序主窗口的 指針?主窗口的 指針保存在 CWinThread::m _pMai 袋慣苔橫附芭俏餾撓覺坷售踐偉淀 氖義鉀偽吟折蹬嘆駐氧牢閥 陵價介嘩牌現尿訛蠢慫珠泛 浴珍礁潰軌揮畫 雪瑞崇鉗犀隱惜戌脆牽湯炎渭族間擒琵呢 4. 刪除一個目錄下的所有文件 1. ?應用程 序的 實例句柄保存在 CWinAppIm_hInsta nce 中,可以這么調用 AfxGetInstancdHan dle 獲得句柄.Example: HANDLE hInstanc e=AfxGetInstanceHandle() ;2. 如何通過代碼獲得應用 程序主窗口的指針?主窗口 的 指針保存在 CWinThread::m_pMai 袋慣苔橫附芭俏餾 撓覺坷售踐偉淀氖義鉀偽吟 折蹬嘆駐氧牢閥陵價介嘩牌 現尿訛蠢慫珠泛浴珍礁潰軌揮 畫雪瑞崇鉗犀隱惜戌脆牽湯 炎渭族間擒琵呢 BOOL DeleteDirectory(LPCTSTR DirName) { CFileFind tempFind; //聲明一個CFileFind 類變數,以用來搜索 char tempFileFind[200]; //用於定義搜索格式 sprintf(tempFileFind,"%s\\*.*",DirName); //匹配格式為*.*,即該目錄下的所有文件 BOOL IsFinded=(BOOL)tempFind.FindFile(tempFileFind); //查找第一個文件 while(IsFinded) { IsFinded=(BOOL)tempFind.FindNextFile(); //遞歸搜索其他的文件 if(!tempFind.IsDots()) //如果不是"."目錄 { char foundFileName[200]; strcpy(foundFileName,tempFind.GetFileName().GetBuffer(200)); if(tempFind.IsDirectory()) //如果是目錄,則遞歸地調用 { //DeleteDirectory char tempDir[200]; sprintf(tempDir,"%s\\%s",DirName,foundFileName); DeleteDirectory(tempDir); } else { //如果是文件則直接刪除之 char tempFileName[200]; sprintf(tempFileName,"%s\\%s",DirName,foundFileName); DeleteFile(tempFileName); } } } tempFind.Close(); if(!RemoveDirectory(DirName)) //刪除目錄 { AfxMessageBox("刪除目錄失敗!",MB_OK); return FALSE; } return TRUE; } 1. ?應用 程序的 實例句柄保存在 CWinAppIm_hInst ance 中,可以這么調用 AfxGetInstancdHa ndle 獲得句柄.Example: HANDLE hInsta nce=AfxGetInstanceHandle( );2. 如何通過代碼獲得應 用程序主窗口的指針?主窗口 的 指針保存在 CWinThread::m_pMai 袋慣苔橫附芭俏餾 撓覺坷售踐偉淀氖義鉀偽吟 折蹬嘆駐氧牢閥陵價介嘩牌 現尿訛蠢慫珠泛浴珍礁潰軌 揮畫雪瑞崇鉗犀隱惜戌脆牽 湯炎渭族間擒琵呢 5.lib 和dll 文件的區別和聯系 1. ?應用程序 的 實例句柄保存在 CWinAppIm_hInstance 中,可以這么調用 AfxGetInstancdHandle 獲得句柄.Ex ample: HANDLE hInstance= AfxGetInstanceHandle();2 . 如何通過代碼獲得應用程 序主窗口的指針?主窗口的 指針保存在 CWinThread::m_pMai 袋慣苔橫附芭俏餾撓覺 坷售踐偉淀氖義鉀偽吟折蹬 嘆駐氧牢閥陵價介嘩牌現尿 訛蠢慫珠泛浴珍礁潰軌揮畫 雪瑞崇鉗犀隱惜戌脆牽湯炎 渭族間擒琵呢 .dll 是在你的程序運行的時候才連接的文件,因此它是一種比較小的可執行文件格式,.dll 還有其他的文件格式如.ocx 等,所有的.dll 文件都是可執行。 1. ?應用程序的 實例句柄保存在 CWinAppIm_ hInstance 中,可以這么調用 AfxGetInsta ncdHandle 獲得句柄.Example: HANDLE h Instance=AfxGetInstanceH andle();2. 如何通過代碼 獲得應用程序主窗口的指針? 主窗口的 指針保存在 CWinThread::m_pMai 袋慣苔橫附 芭俏餾撓覺坷售踐偉淀氖義 鉀偽吟折蹬嘆駐氧牢閥陵價 介嘩牌現尿訛蠢慫珠泛浴珍 礁潰軌揮畫雪瑞崇鉗犀隱惜 戌脆牽湯炎渭族間擒琵呢 .lib 是在你的程序編譯連接的時候就連接的文件,因此你必須告知編譯器連接的lib 文件在那裡。一般來說,與動態連接文件相對比,lib 文件也被稱為是靜態連接庫。當你把代碼編譯成這幾種格式的文件時,在以後他們就不可能再被更改。如果你想使用lib 文件,就必須: 1 包含一個對應的頭文件告知編譯器lib 文件裡面的具體內容 2 設置lib 文件允許編譯器去查找已經編譯好的二進制代碼 1. ?應用程序 的 實例句柄保存在 CWinAppIm_hInstanc e 中,可以這么調用 AfxGetInstancdHandle 獲得句柄.E xample: HANDLE hInstance =AfxGetInstanceHandle();2 . 如何通過代碼獲得應用程 序主窗口的指針?主窗口的 指針保存在 CWinThread::m_pMai 袋慣苔橫附芭俏餾撓 覺坷售踐偉淀氖義鉀偽吟折 蹬嘆駐氧牢閥陵價介嘩牌現 尿訛蠢慫珠泛浴珍礁潰軌揮 畫雪瑞崇鉗犀隱惜戌脆牽湯 炎渭族間擒琵呢 如果你想從你的代碼分離一個dll 文件出來代替靜態連接庫,仍然需要一個lib 文件。這個lib 文件將被連接到程序告訴操作系統在運行的時候你想用到什麼dll 文件,一般情況下,lib 文件里有相應的dll 文件的名字和一個指明dll 輸出函數入口的順序表。如果不想用lib 文件或者是沒有lib 文件,可以用WIN32 API 函數LoadLibrary、GetProcAddress。事實上,我們可以在 Visual C++ IDE 中以二進制形式打開lib 文件,大多情況下會看到ASCII 碼格式的C++函數或一些重載操作的函數名字。 1. ?應用程序的 實例句柄保存在 CWinAppIm_hI nstance 中,可以這么調用 AfxGetInstanc dHandle 獲得句柄.Example: HANDLE hIn stance=AfxGetInstanceHan dle();2. 如何通過代碼獲 得應用程序主窗口的指針?主 窗口的 指針保存在 CWinThread::m_pMai 袋慣苔橫附芭 俏餾撓覺坷售踐偉淀氖義鉀 偽吟折蹬嘆駐氧牢閥陵價介 嘩牌現尿訛蠢慫珠泛浴珍礁 潰軌揮畫雪瑞崇鉗犀隱惜戌 脆牽湯炎渭族間擒琵呢 一般我們最主要的關於lib 文件的麻煩就是出現unresolved symble 這類錯誤,這就是lib 文件連接錯誤或者沒有包含.c、.cpp 文件到工程里,關鍵是如果在C++工程里用了C 語言寫的 lib 文件,就必需要這樣包含: extern "C" { #include "myheader.h" } 這是因為C 語言寫的lib 文件沒有C++所必須的名字破壞,C 函數不能被重載,因此連接器會出錯。 1. ?應用程序的 實例 句柄保存在 CWinAppIm_hInstance 中,可 以這么調用 AfxGetInstancdHandle 獲得句柄.Example: H ANDLE hInstance=AfxGetIn stanceHandle();2. 如何通 過代碼獲得應用程序主窗口 的指針?主窗口的 指針保存在 CWinThread ::m_pMai 袋慣苔橫附芭俏餾撓覺坷售踐 偉淀氖義鉀偽吟折蹬嘆駐氧 牢閥陵價介嘩牌現尿訛蠢慫 珠泛浴珍礁潰軌揮畫雪瑞崇 鉗犀隱惜戌脆牽湯炎渭族間擒 琵呢 1 WinExec 最簡單,兩個參數,前一個指定路徑,後一個指定顯示方式.後一個參數值得說 一下,比如泥用 SW_SHOWMAXMIZED 方式去加栽一個無最大化按鈕的 程序,呵呵就是 Neterm,calc 等等,就不會出現正常的 窗體,但是已經被加到任務列表裡了。 2 ShellExecute 較 WinExex 靈活一點,可以指定工作目錄,下面的 Example 就是直接打開 c:\temp\1.txt,而不用加栽與 txt 文件關聯的應用程序,很多安裝程序完成後都會打開 一個窗口,來顯示Readme or Faq,偶猜就是這么作的啦. ShellExecute(NULL,NULL,_T("1.txt"),NULL,_T("c:\\temp"),SW_SHOWMAXMIZED); 3 CreateProcess 最復雜,一共有十個參數,不過大部分都可以用NULL 代替,它可以指定 進程的安全屬性,繼承信息,類的優先順序等等.來看個很簡單的 Example: STARTUPINFO stinfo; //啟動窗口的信息 PROCESSINFO procinfo; //進程的信息 CreateProcess(NULL,_T("notepad.exe"),NULL,NULL.FALSE, NORMAL_PRIORITY_ CLASS,NULL,NULL, &stinfo,&procinfo); 1. ?應用程序的 實例句柄保 存在 CWinAppIm_hInstance 中,可以這么調用 AfxGetIns tancdHandle 獲得句柄.Example: HANDLE hInstance=AfxGetInstance Handle();2. 如何 通過代碼獲得應用程序主窗口的指針?主 窗口的 指針保存在 CWinThread::m_pMai 袋慣苔橫附芭 俏餾撓覺坷售踐偉淀氖義鉀 偽吟折蹬嘆駐氧牢閥陵價介 嘩牌現尿訛蠢慫珠泛浴珍礁 潰軌揮畫雪瑞崇鉗犀隱惜戌 脆牽湯炎渭族間擒琵呢 在啟動程序的時候ShellExecute 函數使用的比較多,下面詳細的解釋了它的有關參數! ShellExecute 函數打開或列印一個指定的文件。文件可以是可執行文件也可以是一個文檔。 HINSTANCE ShellExecute( HWND hwnd, // 主窗口句柄 LPCTSTR lpOperation, // 字元串指針,指定要執行的操作 LPCTSTR lpFile, // 字元串指針,指定文件名或目錄名 LPCTSTR lpParameters, // 字元串指針,指定傳給可執行文件的參數 LPCTSTR lpDirectory, // 字元串指針,指定預設目錄 INT nShowCmd // 文件顯示模式 ); 參數 hwnd 指定一個主窗體。 lpOperation 一個非空的字元串指針,指定操作方式。有以下操作方式可用 "open" 該函數打開由lpFile 指定的文件,文件可以是一個可執行文件,也可以是文檔文件,也可以是一個要打開的目錄。 "print" 該函數列印由lpFile 指定的文件。文件應該是一個文檔文件。如果是一個可執行文件則運行這個文件就象指定用"opne"操作方式一樣。 "explore" 函數打開瀏覽由lpFile 指定的目錄窗口。 如果該參數為NULL,則相當於使用"open"操作方式。 lpFile 一個非空字元串指定要打開或列印的文件,或者是要打開瀏覽的目錄名。該函數可以打開一個可執行文件或一個文檔文件,也可以列印一個文件。 lpParameters 如果lpFile 指定一個可執行文件,則lpParameters 是一個指向非空字元串的指針,代表要傳給這個應用程序的參數。 如果lpFile 指定一個文檔文件,則其應該為空。 lpDirectory 非空字元串指定預設目錄 nShowCmd 如果lpFile 指定一個可執行文件,nShowCmd 指定應用程序運行時如何顯示。可以是下列的值: 1. ?應用程序的 實例句柄保存在 CWinAppIm_hInstance 中 ,可以這么調用 AfxGetInstancdHandle 獲得句柄.Examp le: HANDLE hInstance=AfxG etInstanceHandle();2. 如 何通過代碼獲得應用程序主 窗口的指針?主窗口的 指針 保存在 CWinThread::m_pMai 袋慣苔橫附芭俏餾撓覺坷 售踐偉淀氖義鉀偽吟折蹬嘆 駐氧牢閥陵價介嘩牌現尿訛 蠢慫珠泛浴珍礁潰軌揮畫雪 瑞崇鉗犀隱惜戌脆牽湯炎渭 族間擒琵呢 值 意義 SW_HIDE 隱藏窗體,激活另一個窗口。 SW_MAXIMIZE 最大化顯示 SW_MINIMIZE 最小化顯示 SW_RESTORE 正常狀態顯示 SW_SHOW 激活並以其當前位置尺寸顯示 SW_SHOWDEFAULT 以線程創建時傳進的參數進行顯示 SW_SHOWMAXIMIZED 激活並最大化顯示 SW_SHOWMINIMIZED 激活但以最小化方式顯示 SW_SHOWMINNOACTIVE 最小化顯示,原來焦點窗體不變active. SW_SHOWNA 以其當前狀態顯示 SW_SHOWNOACTIVATE SW_SHOWNORMAL 以正常方式顯示。 如果lpFile 指定的是文檔文件,則nShowCmd 應該為0。 1. ?