如何使用process.start(程序)打开程序并返回程序的句柄

自在修行 2011-12-08 10:17:41
我使用process.start(程序),返回的Pid不对,使用getProcessByName(aa.ProcessName),查看到的Id,也不对,, Public aa As New Process
Public RunfilenName As String
Dim hwnd As IntPtr
aa.StartInfo.FileName = RunfilenName
aa.Start()
hwnd = aa.Id

Dim i As Int16 = 0
Do While 0 = hwnd And i < 500
Thread.Sleep(10)
hwnd = aa.Id
i += 1
Loop

'--------------------------------

Dim Myprocess() As Process = Process.GetProcessesByName(aa.ProcessName)


'----------------------------------
但是直接使用下面程序段就能正常列取进程的正常Id了,

ps = Process.GetProcesses()
With main.ListView1
For Each p In ps
Dim lvi As ListViewItem = New ListViewItem()
.Items.Add(p.ProcessName + " " + p.Id.ToString() + " " + p.BasePriority.ToString() + " " + Str(p.WorkingSet64 / 1000000.0))

Next
End With

如何处理
...全文
283 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
自在修行 2011-12-09
  • 打赏
  • 举报
回复
因为开始叙述不清,重新开贴吧
沐NeMo 2011-12-08
  • 打赏
  • 举报
回复
Public Class Form1

Public aa As New Process
Public RunfilenName As String = "D:\1.exe"

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim hwnd As IntPtr
aa.StartInfo.FileName = RunfilenName
aa.Start()
hwnd = aa.Id

'Dim i As Int16 = 0

'Do While 0 = hwnd And i < 500
' System.Threading.Thread.Sleep(10)
' hwnd = aa.Id
' i += 1
'Loop

Me.Text = hwnd.ToString
MsgBox(hwnd.ToString)
'能取出值的。是你上面的代碼有問題。都不知道你上面的代碼用來做什麽。

End Sub

End Class
taick 2011-12-08
  • 打赏
  • 举报
回复
你试下
dim p as Process=Process.start("文件")
dim pid=p.id
自在修行 2011-12-08
  • 打赏
  • 举报
回复
补充一下:我是要通过程序运行不特定的外部程序,并对其窗口进行控制,对于一般的程序,使用下面这段程序就可以正常获取,但是,无法获取像“迅雷、迅雷看看、360”等程序的真正Pid,
Public aa As New Process
Public RunfilenName As String
Dim hwnd As IntPtr
aa.StartInfo.FileName = RunfilenName
aa.Start()
hwnd = aa.Id

Dim i As Int16 = 0
Do While 0 = hwnd And i < 500 ‘循环是为了等待相应程序打开,否则无法获取到
Thread.Sleep(10)
hwnd = aa.Id
i += 1
Loop
经测试使用
Dim Myprocess() As Process = Process.GetProcessesByName(aa.ProcessName),
可以获取进程信息,但Pid和上面的程序一样也不是不真正Pid

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧