重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
Process.GetProcessesByName("進程名")‘不帶擴展名
創新互聯公司作為成都網站建設公司,專注重慶網站建設公司、網站設計,有關企業網站建設方案、改版、費用等問題,行業涉及成都廣告制作等多個領域,已為上千家企業服務,得到了客戶的尊重與認可。
找不到 就是沒有在運行,但不知道能不能判斷已暫停狀態。
FindWindowEx
VB聲明
Declare Function FindWindowEx Lib "user32" Alias
"FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As
String, ByVal lpsz2 As String) As Long
說明
在窗口列表中尋找與指定條件相符的第一個子窗口
返回值
Long,找到的窗口的句柄。如未找到相符窗口,則返回零。會設置GetLastError
參數表
參數
類型及說明
hWnd1
Long,在其中查找子的父窗口。如設為零,表示使用桌面窗口(通常說的頂級窗口都被認為是桌面的子窗口,所以也會對它們進行查找)
hWnd2
Long,從這個窗口后開始查找。這樣便可利用對FindWindowEx的多次調用找到符合條件的所有子窗口。如設為零,表示從第一個子窗口開始搜索
lpsz1
String,欲搜索的類名。零表示忽略
lpsz2
String,欲搜索的類名。零表示忽略
這個提供進程即可以判斷程序是否已經啟動
這個是最一般的方法了
希望能幫到你
Imports?System.Runtime.InteropServices
Module?winapi
DllImport("User32.dll",?CallingConvention:=CallingConvention.StdCall,?EntryPoint:="GetWindowThreadProcessId")?_
Function?GetWindowThreadProcessId(ByVal?hwnd?As?IntPtr,?ByRef?procId?As?UInt32)?As?UInt32
End?Function
DllImport("kernel32.dll",?CallingConvention:=CallingConvention.StdCall,?EntryPoint:="OpenProcess")?_
Function?OpenProcess(ByVal?access?As?UInt32,?ByVal?inherit?As?Boolean,?ByVal?procid?As?UInt32)?As?IntPtr
End?Function
DllImport("kernel32.dll",?CallingConvention:=CallingConvention.StdCall,?EntryPoint:="CloseHandle")?_
Function?CloseHandle(ByVal?handle?As?IntPtr)?As?Boolean
End?Function
DllImport("psapi.dll",?CallingConvention:=CallingConvention.StdCall,?EntryPoint:="GetModuleFileNameExW",?Charset:=CharSet.Unicode)?_
Function?GetModuleFileNameExW(ByVal?hProc?As?IntPtr,?ByVal?hMod?As?IntPtr,?ByVal?arrName()?As?Char,?ByVal?arrSize?As?UInt32)?As?UInt32
End?Function
End?Module
Public?Class?Form1
Private?Sub?Button1_Click(sender?As?Object,?e?As?EventArgs)?Handles?Button1.Click
Dim?procid?As?UInt32
GetWindowThreadProcessId(Me.Handle,?procid)
Dim?handle?As?IntPtr
handle?=?OpenProcess(1040,?False,?procid)
Dim?name(65536)?As?Char
Dim?nameSize?As?UInt32?=?GetModuleFileNameExW(handle,?IntPtr.Zero,?name,?65536)
Dim?strName?As?String?=?New?String(name,?0,?nameSize)
CloseHandle(handle)
MsgBox(strName)
End?Sub
End?Class
可惡……我不會vb……臨時去七拼八湊查了點語法……盡力了
button1.visible=false
For Each i In Process.GetProcessesByName("excel")
button1.visible=true
next
VB.net(VS2008)里面比C#還好弄,不需要自己加manifest,直接在項目屬性的“應用程序”里面點擊“查看UAC設置”,在新打開的app.manifest里面把 requestedExecutionLevel level="asInvoker" uiAccess="false" / 替換成 requestedExecutionLevel level="requireAdministrator" uiAccess="false" / 再編譯就行了。