
首先,要知道: *** 作系统与用户间的接口有两种,一种是命令接口,另一种是程序接口。什么是命令接口: 为了便于用户直接或者间接地控制自己的作业, *** 作系统向用户提供了命令接口,用户可以通过该接口向作业发出命令以控制作业的运行。该接口又进一步分为联机用户接口和脱机用户接口。(
参考资料:
首先要
#include <windowsh>
这个头文件
你需要下载msdn,也就是微软的知识库,里边有windows一些公开函数(api)的原型
然后你就可以想调用自己的函数一样使用他们完成你功能了
==============================
至于如何查看相关api所在的库,这些msdn上有的,你最好去下载一个,这个是写win32应用程序必备的参考啊
vc6对应的版本是 msdn 2001 oct
一般的api只要包含windowsh就足够了,windowsh是很多头文件的集合,直接包含它能完成绝大部分的 *** 作了
代码
Private Type PROCESSENTRY32
dwSize As Long
cntUsage As Long
th32ProcessID As Long
th32DefaultHeapID As Long
th32ModuleID As Long
cntThreads As Long
th32ParentProcessID As Long
pcPriClassBase As Long
dwFlags As Long
szExeFile As String 1024
End Type
Private Type MODULEENTRY32
dwSize As Long
th32ModuleID As Long
th32ProcessID As Long
GlblcntUsage As Long
ProccntUsage As Long
modBaseAddr As Byte
modBaseSize As Long
hModule As Long
szModule As String 256
szExePath As String 1024
End Type
Const TH32CS_SNAPHEAPLIST = &H1
Const TH32CS_SNAPPROCESS = &H2
Const TH32CS_SNAPTHREAD = &H4
Const TH32CS_SNAPMODULE = &H8
Const TH32CS_SNAPALL = (TH32CS_SNAPHEAPLIST Or TH32CS_SNAPPROCESS Or TH32CS_SNAPTHREAD Or TH32CS_SNAPMODULE)
Const TH32CS_INHERIT = &H80000000
Public Const MF_DISABLED = &H2
Public Const MF_BYPOSITION = &H400
Public Const HWND_TOPMOST = -1
Public Const HWND_BOTTOM = 1
Public Const HWND_NOTOPMOST = -2
Public Const SWP_NOSIZE = &H1
Public Const SWP_NOMOVE = &H2
Public Const SWP_NOZORDER = &H4
Public Const SWP_NOACTIVATE = &H10
Public Const SWP_SHOWWINDOW = &H40
Public Const SWP_HIDEWINDOW = &H80
Private Declare Function CreateToolhelp32Snapshot Lib "kernel32" (ByVal dwFlags As Long, ByVal th32ProcessID As Long) As Long
Private Declare Function Process32First Lib "kernel32" (ByVal hSnapshot As Long, lppe As PROCESSENTRY32) As Long
Private Declare Function Process32Next Lib "kernel32" (ByVal hSnapshot As Long, lppe As PROCESSENTRY32) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Declare Function EnumWindows& Lib "user32" (ByVal lpEnumFunc As Long, ByVal lParam As Long)
Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long
Private Declare Function GetParent Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function IsWindowVisible Lib "user32" (ByVal hwnd As Long) As Long
Public Declare Function SetWindowPos Lib "user32" (ByVal hWnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Function GetProcessID(EXEName As String, ProcessID As Long) As Boolean
Dim my As PROCESSENTRY32
Dim l As Long
l = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)
If l Then
mydwSize = 1060
If (Process32First(l, my)) Then
Do
If UCase$(Right$(Left$(myszExeFile, InStr(1, myszExeFile, Chr$(0)) - 1), Len(EXEName))) = UCase$(EXEName) Then
CloseHandle l
ProcessID = myth32ProcessID
GetProcessID = True
Exit Function
End If
Loop Until (Process32Next(l, my) < 1)
End If
CloseHandle l
End If
GetProcessID = False
End Function
Private Function EnumWindowsProc(ByVal hwnd As Long, ByVal lParam As Long) As Boolean
Dim lpdwProcessId As Long
GetWindowThreadProcessId hwnd, lpdwProcessId
If lpdwProcessId = lParam Then
If GetParent(hwnd) = 0 And IsWindowVisible(hwnd) Then Form1List1AddItem hwnd
End If
EnumWindowsProc = True
End Function
Public Sub FindProcessWindow(ProcessID As Long)
Call EnumWindows(AddressOf EnumWindowsProc, ProcessID)
End Sub
'窗体代码
Private Sub Command1_Click()
Dim ProcessID As Long
If GetProcessID("qqexe", ProcessID) Then FindProcessWindow ProcessID
End Sub
GetProcessID(EXEName, ProcessID)
找到 文件名为EXEName的进程, ProcessID 返回的进程ID
FindProcessWindow(ProcessID As Long)
找到 属于进程ProcessID 的窗口,可能不只一个,窗口句柄放到了列表框List1中
窗口置前
Call SetWindowPos(Form1hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOSIZE Or SWP_NOMOVE)
窗口不置前
Call SetWindowPos(Form1hWnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOSIZE Or SWP_NOMOVE)
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)