PDA

View Full Version : کتابخانه vb6



aleas2
چهارشنبه 21 بهمن 1394, 12:58 عصر
سلام خسته نباشید دوستان از این سه تا api میخوام استفاده کنم


Public Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long

Public Declare Function GetProcessImageFileName Lib "psapi.dll" Alias "GetProcessImageFileNameA" _
(ByVal hProcess As Long, _
ByVal lpImageFileName As String, _
ByVal nSize As Long) As Long

Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

هر چی میگردم kernel32 و psapi نمی بینم تو منو project>References
با چه نامی هستن؟

meys34
چهارشنبه 21 بهمن 1394, 18:48 عصر
سلام

این ها توابع API هستند و فقط قابلیت فراخوانی دارند و به کتابخانه یا رفرنس نیاز ندارند...

بعنی نمیشه به صورت:
Dim As New
تعریف بشن...

aleas2
چهارشنبه 21 بهمن 1394, 18:52 عصر
من این کد تو نت پیدا کردم

Public Declare Function OpenProcess Lib "kernel32" ( _
ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, _
ByVal dwProcessId As Long) As Long

Public Declare Function GetProcessImageFileName Lib "psapi.dll" Alias "GetProcessImageFileNameA" _
(ByVal hProcess As Long, _
ByVal lpImageFileName As String, _
ByVal nSize As Long) As Long

Public Declare Function CloseHandle Lib "kernel32" ( _
ByVal hObject As Long) As Long

Private Function ExePathFromProcID(idProc As Long) As String
Const MAX_PATH = 260
Const PROCESS_QUERY_INFORMATION = &H400
Const PROCESS_VM_READ = &H10

Dim sBuf As String
Dim sChar As Long, l As Long, hProcess As Long
sBuf = String$(MAX_PATH, Chr$(0))
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION Or PROCESS_VM_READ, 0, idProc)
If hProcess Then
sChar = GetProcessImageFileName(hProcess, sBuf, MAX_PATH)
If sChar Then
sBuf = Left$(sBuf, sChar)
ExePathFromProcID = sBuf
Debug.Print sBuf
End If
CloseHandle hProcess
End If
End Function

که آدرس پروسه بهم میده وقتی اجرا میکنه به api ها خطا میده اجرا نمیشه مشکل چیه ؟
138964
دنبال یه راه حل هستم که دستگیر یا همون هندل بهش بدم
نام فایل اجرایی مثلا barname.exe
و ادرس محل اجرا
c:/new/barname.exe
بهم بده

roo.row
جمعه 23 بهمن 1394, 19:47 عصر
با سلام
باید اونها رو فراخونی کنید مثلابرای کار با فایل ها (اگر مقلا کرنل نیاز شد)به صورت زیر میشه :
Private Declare Function WriteFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToWrite As Long, lpNumberOfBytesWritten As Long, ByVal lpOverlapped As Long) As Long
Private Declare Function ReadFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToRead As Long, lpNumberOfBytesRead As Long, ByVal lpOverlapped As Any) As Long
Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, ByVal lpSecurityAttributes As Any, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Declare Function SetFilePointer Lib "kernel32" (ByVal hFile As Long, ByVal lDistanceToMove As Long, lpDistanceToMoveHigh As Long, ByVal dwMoveMethod As Long) As Long
Private Declare Function GetFileSize Lib "kernel32" (ByVal hFile As Long, lpFileSizeHigh As Long) As Long
Private Declare Function FlushFileBuffers Lib "kernel32" (ByVal hFile As Long) As Long

AbbasVB
چهارشنبه 28 بهمن 1394, 18:32 عصر
من این کد تو نت پیدا کردم

Public Declare Function OpenProcess Lib "kernel32" ( _
ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, _
ByVal dwProcessId As Long) As Long

Public Declare Function GetProcessImageFileName Lib "psapi.dll" Alias "GetProcessImageFileNameA" _
(ByVal hProcess As Long, _
ByVal lpImageFileName As String, _
ByVal nSize As Long) As Long

Public Declare Function CloseHandle Lib "kernel32" ( _
ByVal hObject As Long) As Long

Private Function ExePathFromProcID(idProc As Long) As String
Const MAX_PATH = 260
Const PROCESS_QUERY_INFORMATION = &H400
Const PROCESS_VM_READ = &H10

Dim sBuf As String
Dim sChar As Long, l As Long, hProcess As Long
sBuf = String$(MAX_PATH, Chr$(0))
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION Or PROCESS_VM_READ, 0, idProc)
If hProcess Then
sChar = GetProcessImageFileName(hProcess, sBuf, MAX_PATH)
If sChar Then
sBuf = Left$(sBuf, sChar)
ExePathFromProcID = sBuf
Debug.Print sBuf
End If
CloseHandle hProcess
End If
End Function

که آدرس پروسه بهم میده وقتی اجرا میکنه به api ها خطا میده اجرا نمیشه مشکل چیه ؟
138964
دنبال یه راه حل هستم که دستگیر یا همون هندل بهش بدم
نام فایل اجرایی مثلا barname.exe
و ادرس محل اجرا
c:/new/barname.exe
بهم بده


سلام
کد رو به این صورت استقاده کنید

Private Declare Function OpenProcess Lib "kernel32.dll" ( _
ByVal dwDesiredAccess As Long, _
ByVal bInheritHandle As Long, _
ByVal dwProcessId As Long) As Long


Private Declare Function GetProcessImageFileName _
Lib "psapi.dll" _
Alias "GetProcessImageFileNameA" (ByVal hProcess As Long, _
ByVal lpImageFileName As String, _
ByVal nSize As Long) As Long

Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

Private Function ExePathFromProcID(idProc As Long) As String

Const MAX_PATH = 260

Const PROCESS_QUERY_INFORMATION = &H400

Const PROCESS_VM_READ = &H10

Dim sBuf As String

Dim sChar As Long, l As Long, hProcess As Long

sBuf = String$(MAX_PATH, Chr$(0))
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION Or PROCESS_VM_READ, 0, idProc)

If hProcess Then
sChar = GetProcessImageFileName(hProcess, sBuf, MAX_PATH)

If sChar Then
sBuf = Left$(sBuf, sChar)
ExePathFromProcID = sBuf
Debug.Print sBuf

End If

CloseHandle hProcess

End If

End Function

Private Sub Form_Load()
ExePathFromProcID (3356)
End Sub


ولی مشکلی که داره اینه که آدرس رو به صورت زیر بر می گردونه
\Device\HarddiskVolume1\Windows\explorer.exe
برای حل این مشکل
از برنامه پیوست استفاده کنید
سوالی بود بپرسید
موفق باشید