Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Закрыть программу Добавлено: 09.05.09 08:45  

Автор вопроса:  $@ny@PG | ICQ: 468469477 
Как в vb 6.0 можно закрыть чужое окно или программу?

Ответить

  Ответы Всего ответов: 11  

Номер ответа: 1
Автор ответа:
 Smith



ICQ: adamis@list.ru 

Вопросов: 153
Ответов: 3632
 Профиль | | #1 Добавлено: 09.05.09 09:29
Элементарно, тут вверху в "Примерах" должен быть "поиск чужих окон", по крайней мере на шариге у Игоря он так назывался.

Ответить

Номер ответа: 2
Автор ответа:
 $@ny@PG



ICQ: 468469477 

Вопросов: 71
Ответов: 196
 Профиль | | #2 Добавлено: 09.05.09 15:00
Нашел один пример там программа закрывается по полному пути к Exe файлу называется CloseProg и та блин не работает. Она запускает калькулятор но не закрывает его!

Ответить

Номер ответа: 3
Автор ответа:
 AWP



ICQ: 345685652 

Вопросов: 96
Ответов: 1212
 Web-сайт: xawp.narod.ru
 Профиль | | #3
Добавлено: 09.05.09 15:23
Код модуля:
  1.  
  2. Option Explicit
  3.  
  4. Private Type PROCESSENTRY32
  5.     dwSize As Long
  6.     cntUsage As Long
  7.     th32ProcessID As Long
  8.     th32DefaultHeapID As Long
  9.     th32ModuleID As Long
  10.     cntThreads As Long
  11.     th32ParentProcessID As Long
  12.     pcPriClassBase As Long
  13.     dwFlags As Long
  14.     szExeFile As String * 260
  15. End Type
  16.  
  17. Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
  18. Private Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long
  19.  
  20. Private Declare Function CreateToolhelpSnapshot Lib "kernel32" Alias "CreateToolhelp32Snapshot" (ByVal lFlags As Long, ByVal lProcessID As Long) As Long
  21. Private Declare Function Process32First Lib "kernel32" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
  22. Private Declare Function Process32Next Lib "kernel32" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
  23. Private Declare Sub CloseHandle Lib "kernel32" (ByVal hPass As Long)
  24.  
  25.  
  26. Private Declare Function LookupPrivilegeValue Lib "advapi32.dll" _
  27.     Alias "LookupPrivilegeValueA" ( _
  28.     ByVal lpSystemName As String, _
  29.     ByVal lpName As String, _
  30.     lpLuid As LUID) As Long
  31.  
  32. Private Declare Function OpenProcessToken Lib "advapi32.dll" ( _
  33.     ByVal ProcessHandle As Long, _
  34.     ByVal DesiredAccess As Long, _
  35.     ByRef TokenHandle As Long) As Long
  36.  
  37. Private Declare Function GetLastError Lib "kernel32.dll" () As Long
  38. Private Declare Function GetCurrentProcess Lib "kernel32.dll" () As Long
  39. Private Const MAX_PATH As Long = 260
  40. Private Const SE_DEBUG_NAME As String = "SeDebugPrivilege"
  41.  
  42. Private Const TOKEN_ADJUST_PRIVILEGES As Long = &H20
  43. Private Const TOKEN_QUERY As Long = &H8
  44. Private Const SE_PRIVILEGE_ENABLED As Long = &H2
  45. Private Type LUID
  46.     LowPart As Long
  47.     HighPart As Long
  48. End Type
  49.  
  50. Private Type LUID_AND_ATTRIBUTES
  51.     pLuid As LUID
  52.     Attributes As Long
  53. End Type
  54.  
  55. Private Type TOKEN_PRIVILEGES
  56.     PrivilegeCount As Long
  57.     TheLuid As LUID
  58.     Attributes As Long
  59. End Type
  60. Private Declare Function AdjustTokenPrivileges Lib "advapi32.dll" ( _
  61.     ByVal TokenHandle As Long, _
  62.     ByVal DisableAllPrivileges As Long, _
  63.     ByRef NewState As TOKEN_PRIVILEGES, _
  64.     ByVal BufferLength As Long, _
  65.     ByRef PreviousState As TOKEN_PRIVILEGES, _
  66.     ByRef ReturnLength As Long) As Long
  67.  
  68. Dim tm As Variant
  69.  
  70. Public CanISend As Long
  71.  
  72. Function LoadPrivilege(ByVal Privilege As String) As Boolean
  73. Dim hToken As Long
  74. Dim SEDebugNameValue As LUID
  75. Dim tkp As TOKEN_PRIVILEGES
  76. Dim hProcessHandle As Long
  77. Dim tkpNewButIgnored As TOKEN_PRIVILEGES
  78. Dim lbuffer As Long
  79. hProcessHandle = GetCurrentProcess()
  80. OpenProcessToken hProcessHandle, (TOKEN_ADJUST_PRIVILEGES Or TOKEN_QUERY), hToken
  81. LookupPrivilegeValue "", Privilege, SEDebugNameValue
  82. With tkp
  83.     .PrivilegeCount = 1
  84.     .TheLuid = SEDebugNameValue
  85.     .Attributes = SE_PRIVILEGE_ENABLED
  86. End With
  87. AdjustTokenPrivileges hToken, False, tkp, Len(tkp), tkpNewButIgnored, lbuffer
  88. LoadPrivilege = True
  89. End Function
  90.  
  91. Sub KillProcs(PID As Long)
  92. Dim hProcess As Long
  93. On Error GoTo 3
  94.     hProcess = OpenProcess(&H1F0FFF, 1, PID)
  95.     TerminateProcess hProcess, 0
  96. Exit Sub
  97. 3
  98. End Sub
  99.  
  100. Sub KillProcesse(pName As String)
  101.     Dim hSnapShot As Long, nProcess As Long
  102.     Dim uProcess As PROCESSENTRY32
  103.     Dim hProcess As Long
  104.     Dim LG As Long
  105.     LG = Len(pName)
  106.     hSnapShot = CreateToolhelpSnapshot(2, 0)
  107.     uProcess.dwSize = LenB(uProcess)
  108.     nProcess = Process32First(hSnapShot, uProcess)
  109. On Error GoTo 20
  110.     Do While nProcess
  111.         If LCase(Mid$(uProcess.szExeFile, 1, LG)) = LCase(pName) Then
  112.           hProcess = OpenProcess(&H1F0FFF, 1, uProcess.th32ProcessID)
  113.           TerminateProcess hProcess, 0 'Удалён
  114.           GoTo 10
  115.         End If
  116.         nProcess = Process32Next(hSnapShot, uProcess)
  117.     Loop
  118. 10
  119.     CloseHandle hSnapShot
  120.     Exit Sub
  121. 20
  122. End Sub

Ответить

Номер ответа: 4
Автор ответа:
 AWP



ICQ: 345685652 

Вопросов: 96
Ответов: 1212
 Web-сайт: xawp.narod.ru
 Профиль | | #4
Добавлено: 09.05.09 15:25
сорри, привилегии вставил случайно.

Ответить

Номер ответа: 5
Автор ответа:
 $@ny@PG



ICQ: 468469477 

Вопросов: 71
Ответов: 196
 Профиль | | #5 Добавлено: 09.05.09 15:37
А что надо чтоб например закрыть проводник Мой компьютер???
KillProcesse("Мой компьютер";)

Ответить

Номер ответа: 6
Автор ответа:
 Smith



ICQ: adamis@list.ru 

Вопросов: 153
Ответов: 3632
 Профиль | | #6 Добавлено: 09.05.09 16:01
Фигасе модули у вас, а больше не нашлось?
Не издевайте пожалуйсто мой моск, его и так мала:)
  1. Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
  2. Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hWnd As Long, lpdwProcessId As Long) As Long
  3. Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
  4. Private Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long
  5. Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
  6. Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
  7.  
  8. Sub Main()
  9.     Dim pID As Long
  10.     Dim tmpL As Long
  11.  
  12.     tmpL = FindWindow(vbNullString, "Это имя окна программы!!!!!!!!!!!!!!" & vbNullChar)
  13.     GetWindowThreadProcessId tmpL, pID
  14.     tmpL = OpenProcess(1, False, pID)
  15.     TerminateProcess tmpL, 0
  16.     CloseHandle tmpL
  17. End Sub

Ответить

Номер ответа: 7
Автор ответа:
 AWP



ICQ: 345685652 

Вопросов: 96
Ответов: 1212
 Web-сайт: xawp.narod.ru
 Профиль | | #7
Добавлено: 09.05.09 16:13

Фигасе модули у вас, а больше не нашлось?

Вы сейчас закрыли программу по окну, а в модуле можно закрыть по окну, по имени процесса, по PID, по пути файла и т.д...

Ответить

Номер ответа: 8
Автор ответа:
 Smith



ICQ: adamis@list.ru 

Вопросов: 153
Ответов: 3632
 Профиль | | #8 Добавлено: 09.05.09 16:18
Чтоб Мой компьютер закрыть достаточно этого:
  1.     AppActivate "Мой компьютер", True
  2.     DoEvents
  3.     DoEvents
  4.     SendKeys "%{F4}", True

Ответить

Номер ответа: 9
Автор ответа:
 Smith



ICQ: adamis@list.ru 

Вопросов: 153
Ответов: 3632
 Профиль | | #9 Добавлено: 09.05.09 16:22
AWP а ты удали свой пост подредактируй че ты там лишнее воткнул и отпости снова, просто для его задачи сам видишь, из пушки по воробьям, птичку жалко :D

Ответить

Номер ответа: 10
Автор ответа:
 AWP



ICQ: 345685652 

Вопросов: 96
Ответов: 1212
 Web-сайт: xawp.narod.ru
 Профиль | | #10
Добавлено: 09.05.09 21:45
Вобщем ты прав.

Ответить

Номер ответа: 11
Автор ответа:
 $@ny@PG



ICQ: 468469477 

Вопросов: 71
Ответов: 196
 Профиль | | #11 Добавлено: 10.05.09 11:29
Спасибо огромное все отлично работает! :-)

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам