Получить hwnd окна экземпляра - VB

Узнай цену своей работы

Формулировка задачи:

Всем привет, подскажите как получить хендл окна экземпляра? Допустим всего запусков программы было только 2. из них надо вернуть хендл первого окна
Листинг программы
  1. Private Sub Form_Load()
  2. If App.PrevInstance Then Вернуть_ее_hwnd
  3. End Sub
Заранее спасибо

Решение задачи: «Получить hwnd окна экземпляра»

textual
Листинг программы
  1. Option Explicit
  2.  
  3. Private Declare Function CreateFileMapping Lib "kernel32" Alias "CreateFileMappingA" (ByVal hFile As Long, lpFileMappingAttributes As Any, ByVal flProtect As Long, ByVal dwMaximumSizeHigh As Long, ByVal dwMaximumSizeLow As Long, ByVal lpName As String) As Long
  4. Private Declare Function MapViewOfFile Lib "kernel32" (ByVal hFileMappingObject As Long, ByVal dwDesiredAccess As Long, ByVal dwFileOffsetHigh As Long, ByVal dwFileOffsetLow As Long, ByVal dwNumberOfBytesToMap As Long) As Long
  5. Private Declare Function UnmapViewOfFile Lib "kernel32" (ByVal lpBaseAddress As Long) As Long
  6. Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
  7. Private Declare Function GetMem4 Lib "msvbvm60" (Src As Any, Dst As Any) As Long
  8.  
  9. Private Const ERROR_ALREADY_EXISTS = 183&
  10. Private Const PAGE_READWRITE = 4&
  11. Private Const FILE_MAP_WRITE = &H2
  12.  
  13. Dim hMap As Long
  14.  
  15. Private Sub Form_Load()
  16.     Dim ptr As Long, e As Long, hPrev As Long
  17.     hMap = CreateFileMapping(-1, ByVal 0&, PAGE_READWRITE, 0, 4, "MyPrevAppInst"): e = Err.LastDllError
  18.     If hMap = 0 Then MsgBox "Err create file mapping": End
  19.     ptr = MapViewOfFile(hMap, FILE_MAP_WRITE, 0, 0, 0)
  20.     If ptr = 0 Then
  21.         MsgBox "Projection error"
  22.         CloseHandle hMap
  23.         End
  24.     End If
  25.     If e = ERROR_ALREADY_EXISTS Then
  26.         ' Ýêçåìïëÿð óæå Г§Г*ГЇГіГ№ГҐГ*
  27.        GetMem4 ByVal ptr, hPrev
  28.         UnmapViewOfFile ptr
  29.         CloseHandle hMap
  30.         MsgBox "Ýêçåìïëÿð Г§Г*ГЇГіГ№ГҐГ* hwnd: " & hPrev
  31.         End
  32.     End If
  33.     GetMem4 CLng(Me.hWnd), ByVal ptr
  34.     UnmapViewOfFile ptr
  35. End Sub
  36.  
  37. Private Sub Form_Unload(Cancel As Integer)
  38.     CloseHandle hMap
  39. End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.538 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы