Facebook Sharer
选择您要替换的背景颜色:
【农历新年】背景图片:
个性化设定
 注册  找回密码
查看: 1207|回复: 4
打印 上一主题 下一主题

VB.NET 疑问 - notepad minimize, sendkey去minimized的notepad

[复制链接]

62

主题

5

好友

3715

积分

本站名嘴

Rank: 11Rank: 11

跳转到指定楼层
1#
发表于 2011-3-27 02:05 PM |只看该作者 |倒序浏览
  1. dim proc as process() = system.diagnostics.process.getprocesses()
  2. for i as integer = 0 to proc.count - 1
  3. if proc(i).processname = "notepad" then
  4. PostMessage(proc(i).MainWindowHandle,WM_CHAR,keys.H,0)
  5. end if
  6. next
  7. Public Const WM_CHAR = &H102
复制代码
请问哪里错?出现api invalid parameter exception




收藏收藏0

62

主题

5

好友

3715

积分

本站名嘴

Rank: 11Rank: 11

2#
发表于 2011-3-27 03:12 PM |只看该作者
又是API问题,弄好了'

  1. Private Declare Function PostMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As IntPtr, _
  2. ByVal wMsg As IntPtr, ByVal wParam As IntPtr, ByVal lParam As String) As Long
  3.     Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Integer

  4. Dim hwnd As Long = FindWindow(vbNullString, "Untitled - Notepad")
  5.         If CheckBox1.Checked = True Then PostMessage(hwnd, WM_KEYDOWN, VK_1, vbNullString)
复制代码
为什么没有反应?


回复

使用道具 举报

2

主题

0

好友

251

积分

支柱会员

Rank: 4Rank: 4Rank: 4Rank: 4

3#
发表于 2011-3-27 10:57 PM |只看该作者
又是老毛病,你如果不把VK_1,WM_KEYDOWN post出,谁想看这种不完整的code。

btw,你的问题在于notepad 是由多个window组成的,你找的是parent,你必需找出打字的 child window。


回复

使用道具 举报

2

主题

0

好友

251

积分

支柱会员

Rank: 4Rank: 4Rank: 4Rank: 4

4#
发表于 2011-3-27 11:27 PM |只看该作者
本帖最后由 shippo 于 2011-3-27 11:29 PM 编辑

刚试了没问题,vb 真麻烦。。。
  1. Private Const WM_CHAR = &H102
  2. Private Const WM_KEYDOWN = &H100
  3. Private Const VK_RBUTTON = &H9

  4. Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (_
  5. ByVal hwnd As Int32, ByVal wMsg As Int32,_
  6. ByVal wParam As Int32, ByVal lParam As Int32) As Int32

  7. Private Declare Auto Function FindWindow Lib "user32" (ByVal lpClassName As String, _
  8. ByVal lpWindowName As String) As IntPtr

  9. Private Declare Auto Function FindWindowEx Lib "user32" (ByVal hWnd1 As IntPtr, _
  10. ByVal hWnd2 As IntPtr, ByVal lpsz1 As String, ByVal lpsz2 As String) As IntPtr

  11. Dim hwnd As Long = FindWindow(vbNullString, "Untitled - Notepad")
  12. Dim editwnd As Long = FindWindowEx(hwnd, 0, "Edit", vbNullString)
  13. PostMessage(editwnd, WM_KEYDOWN, VK_RBUTTON, 0)
复制代码


回复

使用道具 举报

62

主题

5

好友

3715

积分

本站名嘴

Rank: 11Rank: 11

5#
发表于 2011-4-7 06:35 PM |只看该作者
谢谢你,我已经弄到很久了,只是没有空来这里


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

JBTALKS.CC |联系我们 |隐私政策 |Share

GMT+8, 2024-10-25 10:37 PM , Processed in 0.111807 second(s), 26 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

Ultra High-performance Dedicated Server powered by iCore Technology Sdn. Bhd.
Domain Registration | Web Hosting | Email Hosting | Forum Hosting | ECShop Hosting | Dedicated Server | Colocation Services
本论坛言论纯属发表者个人意见,与本论坛立场无关
Copyright © 2003-2012 JBTALKS.CC All Rights Reserved
合作联盟网站:
JBTALKS 马来西亚中文论坛 | JBTALKS我的空间 | ICORE TECHNOLOGY SDN. BHD.
回顶部