線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1083
推到 Plurk!
推到 Facebook!

如何傳遞 Hot_Key

尚未結案
hjlin
一般會員


發表:63
回覆:48
積分:22
註冊:2003-02-11

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-04-12 21:41:16 IP:61.230.xxx.xxx 未訂閱
ShellExecute( HWND hwnd, // 父視窗 Handle LPCTSTR lpOperation, // 開啟或操作方式 LPCTSTR lpFile, // 檔案名稱 LPCTSTR lpParameters, // 參數內容 LPCTSTR lpDirectory, // 命令所在目錄 int nShowCmd // 執行時視窗型態 ); ShellExecute(Form1->Handle,"open","D:\\TEST.exe",NULL,NULL,SW_SHOWNORMAL); 請問要如何傳遞 HOT_KEY 給 TEST
kkccgg
初階會員


發表:50
回覆:54
積分:30
註冊:2002-07-28

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-04-12 22:53:55 IP:203.204.xxx.xxx 未訂閱
請參考這篇,可得到詳盡之答案 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=30743 謝謝
hjlin
一般會員


發表:63
回覆:48
積分:22
註冊:2003-02-11

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-04-13 09:12:50 IP:61.56.xxx.xxx 未訂閱
不好意思...還是看不懂...可以詳細說明一下使用方法嗎
m8815010
版主


發表:99
回覆:372
積分:289
註冊:2003-11-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-04-13 14:42:48 IP:61.63.xxx.xxx 未訂閱
引言: 不好意思...還是看不懂...可以詳細說明一下使用方法嗎
hjlin你好< >: 不好意思< >,好奇的問一下,你所謂的傳遞hot key給被開啟程式是什麼意思,功用是什麼?
hjlin
一般會員


發表:63
回覆:48
積分:22
註冊:2003-02-11

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-04-13 18:07:26 IP:61.56.xxx.xxx 未訂閱
傳遞 Hot_key 只是為了要那個被開啟的程式可以直接執行某個動作.不用再下一次command...希望這麼說你可以理解... 請問一下有方法嗎
axsoft
版主


發表:681
回覆:1056
積分:969
註冊:2002-03-13

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-04-13 18:59:02 IP:61.218.xxx.xxx 未訂閱
引言: 傳遞 Hot_key 只是為了要那個被開啟的程式可以直接執行某個動作.不用再下一次command...希望這麼說你可以理解... 請問一下有方法嗎
    hjlin您好:
請參考
【問題】如何觸發另一個程式中某個按鈕OnClick的事件? 
http://delphi.ktop.com.tw/topic.php?topic_id=30660    【問題】兩個project間的物件如何互用?
http://delphi.ktop.com.tw/topic.php?topic_id=46893    如何建立一個 Event通知其它人呢?
http://debut.cis.nctu.edu.tw/~ching/Doc/Tech/[BCB] 05 如何建立一個 Event通知其它人.htm    如果您只是純粹用Shellexecute API傳遞參數
ShellExecute(NULL,"open","MyNotePad.exe","c:\\cbuilder5\\readme.txt","",SW_SHOWDEFAULT);    在你的MyNotePad.exe AP中可以用ParamStr()取得"c:\\cbuilder5\\readme.txt"
void __fastcall TForm1::FormCreate(TObject *Sender)
{
   for(int i=1; i<=ParamCount(); i  )
   {
      ShowMessage(ParamStr(i));
   }
}    
/*生活是一種藝術,用心生活才能享受生活*/
發表人 - axsoft 於 2004/04/13 20:17:23
axsoft
版主


發表:681
回覆:1056
積分:969
註冊:2002-03-13

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-04-13 19:33:01 IP:61.218.xxx.xxx 未訂閱

透過CreateProcess API啟動Notepad,並修改Notepad視窗標題

//---------------------------------------------------------------------------    #include 
#pragma hdrstop    #include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
BOOL CALLBACK EnumThreadWndProc(HWND hwnd, LPARAM lParam)
{
    // set window caption associated with the specified process
    ::SetWindowText(hwnd, "CaptionChanged");
    return TRUE;
}    //---------------------------------------------------------------------------    void __fastcall TForm1::Button1Click(TObject *Sender)
{
 // inherit current process's startup info
    STARTUPINFO startupInfo;
    ::GetStartupInfo(&startupInfo);        // run another application and get its process id
    PROCESS_INFORMATION processInformation;
    ::CreateProcess(
        NULL,                                   // name of executable module
        "c:\\winnt\\notepad.exe",               // command line string
        NULL,                                   // lpProcessAttributes
        NULL,                                   // pThreadAttributes
        TRUE,                                   // bInheritHandle
        CREATE_BREAKAWAY_FROM_JOB,              // dwCreationFlags
        NULL,                                   // lpEnvironment
        NULL,                                   // lpCurrentDirectory
        &startupInfo,                           // lpStartupInfo
        &processInformation                     // lpProcessInformation
    );        // we must wait until initialization is completed,
    //  otherwise, the process may not have time to create window.
    ::WaitForInputIdle(processInformation.hProcess, INFINITE);
    ::EnumThreadWindows(processInformation.dwThreadId, (int (__stdcall *)())EnumThreadWndProc, (LPARAM)this);    }
//---------------------------------------------------------------------------    
/*生活是一種藝術,用心生活才能享受生活*/
系統時間:2024-05-07 5:45:39
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!