同意trainbox:
FindWindow
sendmessage Or postmessage 

解决方案 »

  1.   

    var 
    HWndCalculator : HWnd; 
    begin 
    // find the exist calculator window 
    HWndCalculator := Winprocs.FindWindow(nil, '计算器'); // close the exist Calculator 
    if HWndCalculator <> 0 then 
    SendMessage(HWndCalculator, WM_help, 0, 0); 
    end; 
      

  2.   

    hehe,楼上的兄弟,你的例程别的地方也有,我手里现在没有DEPHI环境,无法查帮助(我在公司),所以想问的是象F1,F2这类健的虚拟键值是多少
      

  3.   

    Virtual Key codes provide a symbolic representation of user key presses.UnitWindowsDescriptionVirtual key codes allow you to represent keyboard values for non-alphanumeric keys.Windows defines special constants for each key the user can press. These constants can then be used to refer to the keystroke in Windows API calls or in an OnKeyUp or OnKeyDown event handler.Most of the virtual key codes are defined in the Windows unit. Additional key codes may be defined in special-purpose Windows wrappers such as the imm unit. For alphabetic keys, you should use ord with an uppercase character, for example, ord( 'M' ). To create a virtual key code for an alphanumeric value, use the Ord method. For example the virtual key code for ??is Ord(??.The following table lists the virtual key codes defined in the Windows unit:
    Virtual Key Code Corresponding keyVK_LBUTTON Left mouse button
    VK_RBUTTON Right mouse button
    VK_CANCEL Control+Break
    VK_MBUTTON Middle mouse button
    VK_BACK Backspace key
    VK_TAB Tab key
    VK_CLEAR Clear key
    VK_RETURN Enter key
    VK_SHIFT Shift key
    VK_CONTROL Ctrl key
    VK_MENU Alt key
    VK_PAUSE Pause key
    VK_CAPITAL Caps Lock key
    VK_KANA Used with IME
    VK_HANGUL Used with IME
    VK_JUNJA Used with IME
    VK_FINAL Used with IME
    VK_HANJA Used with IME
    VK_KANJI Used with IME
    VK_CONVERT Used with IMEVK_NONCONVERT Used with IME
    VK_ACCEPT Used with IME
    VK_MODECHANGE Used with IME
    VK_ESCAPE Esc key
    VK_SPACE Space bar
    VK_PRIOR Page Up key
    VK_NEXT Page Down key
    VK_END End key
    VK_HOME Home key
    VK_LEFT Left Arrow key
    VK_UP Up Arrow key
    VK_RIGHT Right Arrow key
    VK_DOWN Down Arrow key
    VK_SELECT Select key
    VK_PRINT Print key (keyboard-specific)
    VK_EXECUTE Execute key
    VK_SNAPSHOT Print Screen key
    VK_INSERT Insert key
    VK_DELETE Delete key
    VK_HELP Help keyVK_LWIN Left Windows key (Microsoft keyboard)
    VK_RWIN Right Windows key (Microsoft keyboard)
    VK_APPS Applications key (Microsoft keyboard)
    VK_NUMPAD0 0 key (numeric keypad)
    VK_NUMPAD1 1 key (numeric keypad)
    VK_NUMPAD2 2 key (numeric keypad)
    VK_NUMPAD3 3 key (numeric keypad)
    VK_NUMPAD4 4 key (numeric keypad)
    VK_NUMPAD5 5 key (numeric keypad)
    VK_NUMPAD6 6 key (numeric keypad)
    VK_NUMPAD7 7 key (numeric keypad)
    VK_NUMPAD8 8 key (numeric keypad)
    VK_NUMPAD9 9 key (numeric keypad)VK_MULTIPLY Multiply key (numeric keypad)
    VK_ADD Add key (numeric keypad)
    VK_SEPARATOR Separator key (numeric keypad)
    VK_SUBTRACT Subtract key (numeric keypad)
    VK_DECIMAL Decimal key (numeric keypad)
    VK_DIVIDE Divide key (numeric keypad)
    VK_F1 F1 key
    VK_F2 F2 key
    VK_F3 F3 key
    VK_F4 F4 key
    VK_F5 F5 key
    VK_F6 F6 key
    VK_F7 F7 key
    VK_F8 F8 key
    VK_F9 F9 key
    VK_F10 F10 key
    VK_F11 F11 key
    VK_F12 F12 key
    VK_F13 F13 key
    VK_F14 F14 key
    VK_F15 F15 keyVK_F16 F16 key
    VK_F17 F17 key
    VK_F18 F18 key
    VK_F19 F19 key
    VK_F20 F20 key
    VK_F21 F21 key
    VK_F22 F22 key
    VK_F23 F23 key
    VK_F24 F24 key
    VK_NUMLOCK Num Lock key
    VK_SCROLL Scroll Lock key
    VK_LSHIFT Left Shift key (only used with GetAsyncKeyState and GetKeyState)
    VK_RSHIFT Right Shift key (only used with GetAsyncKeyState and GetKeyState)
    VK_LCONTROL Left Ctrl key (only used with GetAsyncKeyState and GetKeyState)
    VK_RCONTROL Right Ctrl key (only used with GetAsyncKeyState and GetKeyState)VK_LMENU Left Alt key (only used with GetAsyncKeyState and GetKeyState)
    VK_RMENU Right Alt key (only used with GetAsyncKeyState and GetKeyState)
    VK_PROCESSKEY Process key
    VK_ATTN Attn key
    VK_CRSEL CrSel key
    VK_EXSEL ExSel key
    VK_EREOF Erase EOF key
    VK_PLAY Play key
    VK_ZOOM Zoom key
    VK_NONAME Reserved for future use
    VK_PA1 PA1 key
    VK_OEM_CLEAR Clear key
      

  4.   

    我现在回寝室了,上面贴的那些我在help中找到了!但是我想问一下,如何能够模拟发出组合键,如alt+1,还有,1键的键值我不知道,组合是用and连接吗?
      

  5.   

    对一个以运行着的程序来说,假设它里面有一个可获得输入焦点的edit,我如何能够轮循这个程序的所有窗体,直到找到这个可以获得输入焦点的控件?
    假设,一个程序的文件名是A,可是它运行起来时,在任务栏上显示的标题是B,我在任务管理器中看到的运行的程序名也是A,但通过这两个名字A,B,我都可以通过findwindow找到它们的句柄,但真正要对其操作的是不是A?也就是说,我是向A这个句柄发送消息才能影响到此程序的运行,还是向B这个句柄发送消息才能影响到此程序的运行.
      

  6.   

    我写了一个向应用程序窗口发送模拟按键的过程,供您参考:
     procedure sendkey(key:word;downup:word);
      begin
       case downup of
       0:KEYBD_EVENT(key,MAPVIRTUALKEY(key,0),0,0);//键按下
       1:KEYBD_EVENT(key,MAPVIRTUALKEY(key,0),KEYEVENTF_KEYUP,0); //键弹起
       3:begin //键按下再弹起
        KEYBD_EVENT(key,MAPVIRTUALKEY(key,0),0,0);
        KEYBD_EVENT(key,MAPVIRTUALKEY(key,0),KEYEVENTF_KEYUP,0);
        END;
      END;
      end;第一个参数为要发送的按键的键值,第二个参数表示按键的动作:0表示按住不放;1表示放开;3表示先按再放。比如要实现发送ALT+1可以这样调用:
     sendkey(vk_menu,0);//ALT键按下去
     SENDKEY(49,3);//1键按下并弹起
     SENDKEY(VK_MENU,1);//ALT弹起
    应先用FINDWINDOW找到接收按键的窗口句柄,并将该窗口置前台再发送。
    仅供参考,错误之处请指正!
      

  7.   

    找到一个窗口的子窗口的句柄好象是findwindowex,但假设,一个窗体里只有一个可以获得输入焦点的子控件,我如何轮循这个窗体的所有控件,并找到这个可以获得输入焦点的控件呢?
      

  8.   

    轮循这个窗体的所有控件

    getwindow
    getNextWindow