全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:3754
推到 Plurk!
推到 Facebook!

工作管理員中的Process(BCB做法)

尚未結案
brandonwu78
一般會員


發表:3
回覆:2
積分:1
註冊:2003-10-27

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-10-27 23:37:15 IP:61.61.xxx.xxx 未訂閱
請教各位大大:我們如何取得工作管理員中目前所有的Process呢~~?? 小弟看MSDN看到快吐血了…… 希望各位大大能提供一些BCB的範例程式參考…… 謝謝各位大大!
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-10-27 23:40:29 IP:61.221.xxx.xxx 未訂閱
引言: 請教各位大大:我們如何取得工作管理員中目前所有的Process呢~~?? 小弟看MSDN看到快吐血了…… 希望各位大大能提供一些BCB的範例程式參考…… 謝謝各位大大!
brandonwu78 你好: 請參考以下的連結文章
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
brandonwu78
一般會員


發表:3
回覆:2
積分:1
註冊:2003-10-27

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-10-28 21:26:39 IP:61.61.xxx.xxx 未訂閱
各位大大~~不好意思~~~~小弟試過了上面的範例~~ 好像都無法達到小弟的要求(取得所有工作管理員中的Processses)耶~~~~ 還是各位大大有沒有其它的辦法呢~???
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-10-28 21:30:59 IP:61.221.xxx.xxx 未訂閱
引言: 各位大大~~不好意思~~~~小弟試過了上面的範例~~ 好像都無法達到小弟的要求(取得所有工作管理員中的Processses)耶~~~~ 還是各位大大有沒有其它的辦法呢~???
brandonwu78 你好: 真的不行嗎?? 小弟我的可以喔< > 你自己寫的程式碼呢?? 是否貼上來讓大家看看< > -- Enjoy Researching & Developing --
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
brandonwu78
一般會員


發表:3
回覆:2
積分:1
註冊:2003-10-27

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-10-28 22:48:12 IP:61.61.xxx.xxx 未訂閱
  我是看MSDN上的做法…    #include  #include #include "psapi.h" void PrintProcessNameAndID( DWORD processID ) { char szProcessName[MAX_PATH] = "unknown"; // Get a handle to the process. HANDLE hProcess = OpenProcess( PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, processID ); // Get the process name. if (NULL != hProcess ) { HMODULE hMod; DWORD cbNeeded; if ( EnumProcessModules( hProcess, &hMod, sizeof(hMod), &cbNeeded) ) { GetModuleBaseName( hProcess, hMod, szProcessName, sizeof(szProcessName) ); } else return; } else return; // Print the process name and identifier. printf( "%s (Process ID: %u)\n", szProcessName, processID ); CloseHandle( hProcess ); } void main( ) { // Get the list of process identifiers. DWORD aProcesses[1024], cbNeeded, cProcesses; unsigned int i; if ( !EnumProcesses( aProcesses, sizeof(aProcesses), &cbNeeded ) ) return; // Calculate how many process identifiers were returned. cProcesses = cbNeeded / sizeof(DWORD); // Print the name and process identifier for each process. for ( i = 0; i < cProcesses; i ) PrintProcessNameAndID( aProcesses[i] ); } 到底是哪裡出了問題呢~~???
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-10-28 23:39:07 IP:61.221.xxx.xxx 未訂閱
引言: 我是看MSDN上的做法… #include #include #include "psapi.h" void PrintProcessNameAndID( DWORD processID ) { char szProcessName[MAX_PATH] = "unknown"; // Get a handle to the process. HANDLE hProcess = OpenProcess( PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, processID ); // Get the process name. if (NULL != hProcess ) { HMODULE hMod; DWORD cbNeeded; if ( EnumProcessModules( hProcess, &hMod, sizeof(hMod), &cbNeeded) ) { GetModuleBaseName( hProcess, hMod, szProcessName, sizeof(szProcessName) ); } else return; } else return; // Print the process name and identifier. printf( "%s (Process ID: %u)\n", szProcessName, processID ); CloseHandle( hProcess ); } void main( ) { // Get the list of process identifiers. DWORD aProcesses[1024], cbNeeded, cProcesses; unsigned int i; if ( !EnumProcesses( aProcesses, sizeof(aProcesses), &cbNeeded ) ) return; // Calculate how many process identifiers were returned. cProcesses = cbNeeded / sizeof(DWORD); // Print the name and process identifier for each process. for ( i = 0; i < cProcesses; i ) PrintProcessNameAndID( aProcesses[i] ); } 到底是哪裡出了問題呢~~???
brandonwu78 你好:
(1)我想~~先說出心中的感受,從一開始到現在,老實說~~小弟我很懷疑你做過
   多少的努力,問你自己寫的程式碼在哪裡?? 結果你貼了一篇我第一次提供給
   你的連結中的程式碼 (一字不改,完全照抄);試想~~天底下有這麼好的事情
   嗎?? 假設 M$DN 中的範例程式碼都可以完全照抄,而且不用修改就能夠達到
   自己需求的話,那可能大家都沒飯可吃了。
(2)如果你跟小弟我在 (1) 中想像得不一樣的話,那我在此鄭重道歉,可是,如
   果不幸言中,我只想提醒你、建議你,天下沒有白吃的午餐,自己的工作最
   好要由自己完成,這樣不是會比較有成就感嗎??
(3)我稍微修改了一下,在 BCB 就可以編譯/執行了,請參考以下的範例程式碼
   (要先在 Form1 上拉一個 Memo1 及 Button1)
#include "psapi.h"
void ListProcessNameAndID(DWORD processID);    void ListProcessNameAndID(DWORD processID)
{
   char szProcessName[MAX_PATH]="unknown";       //---------------------------------------------------------------------------
   // Get a handle to the process.
   HANDLE hProcess=OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ,
      FALSE, processID);       //---------------------------------------------------------------------------
   // Get the process name.
   if(NULL!=hProcess)
   {
      HMODULE hMod;
      DWORD cbNeeded;          if(EnumProcessModules(hProcess, &hMod, sizeof(hMod), &cbNeeded))
      {
         GetModuleBaseName(hProcess, hMod, szProcessName, sizeof(szProcessName));
      }
      else
      {
         return;
      }
   }
   else
   {
      return;
   }       //---------------------------------------------------------------------------
   // Print the process name and identifier.
   Form1->Memo1->Lines->Add((AnsiString)szProcessName ", ID: " IntToStr(processID));       CloseHandle(hProcess);
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
   DWORD aProcesses[1024], cbNeeded, cProcesses;
   unsigned int i;       if(!EnumProcesses(aProcesses, sizeof(aProcesses), &cbNeeded ))
   {
      return;
   }       //---------------------------------------------------------------------------
   // Calculate how many process identifiers were returned.
   cProcesses=cbNeeded/sizeof(DWORD);       //---------------------------------------------------------------------------
   // Print the name and process identifier for each process.
   for(i=0; i

<>
備註:
記得要利用 >    -- 
        
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
系統時間:2024-05-02 21:13:15
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!