作者phterry (小风)
看板Visual_Basic
标题Re: [VB6 ] 切到其他程式
时间Sun Sep 21 01:47:53 2008
※ 引述《homer0403 (人活着就是为了学会珍惜)》之铭言:
: 我想要用VB做到一个功能
: 可以侦测到其他程式的存在
: 如
: 工具列上有 "笔记本1" "笔记本2"
: 然後我写一个贴上剪贴簿文字的程式
: 执行一个"vb贴上.exe"
: 执行之後
: 可以自动地贴一段文字如 "homer0403是大笨蛋!" 在"笔记本2"上
: 大概如这样的功能
: 重点是
: 1. 如何抓到工具列上有什麽程式在跑
a. FindWindow
使用这个唯一的不便就在於你必须知道window title的完整字串, 使用你
提到的"笔计本1", "笔计本2"时, 还算好用, 但如果是用在 Internet
Explorer 的话, 会相当难用, 因为 IE 的 title 会随着浏览的网页而有
所不同.
b. EnumWindows
如果你是要抓所有系统正在执行的window,可以用 EnumWindows,当你抓到
所有的 window 之後, 搭配 GetWindowText, 即可取得各 Window 的标题
(window title), 并可针对各别的 hWnd (handle of Window) 过滤,或者
取得 PID 之类的.
: 2. 如何将控制权转到"笔记本2"上
: 好让我可以做贴上的动作
SetForegroundWindow 是必备的, 但是, 你用了之後, 可能就会发现, 它并
不是每次呼叫都会成功, 尤其是要呼叫的视窗状态是最小化的时候, 这时候,
你可以在呼叫SetForegroundWindow前先呼叫ShowWindow(hWnd, SW_NORMAL),
或ShowWindow(hWnd, SW_RESTORE)把视窗带出,如果再有问题,就得试试使用
SetWindowPos来改变Window的ZOrder,或者使用AttachThreadInput来连结输
入的焦点.这些你应该都能在网路上找到使用的范例和解说.
: 至於其他部分我自己懂怎麽补完
: 预计大概是要呼叫某API程式吧
: 希望可以给我一点提示或方向
: 谢谢Orz
--
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 122.117.199.67
1F:推 homer0403:哇! 太感恩了! m(_._)m 09/23 03:23