Модераторы: Akina

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Закрытие сторонней программы 
:(
    Опции темы
AHTUxPK
Дата 10.1.2012, 21:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 1.9.2011
Где: Пятигорск

Репутация: нет
Всего: нет



Первый способ помог, большое спасибо, только пришлось вставить одну строчку:

Код

Call keybd_event(VK_CONTROL, 0, 0, 0)
PostMessage hwnd, WM_KEYDOWN, VK_C, 0
Sleep (500)
Call keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0)


Ибо если вообще без задержки команда иногда не успевала доходить, а контрол уже отжимался

Это сообщение отредактировал(а) AHTUxPK - 10.1.2012, 21:22
PM MAIL WWW ICQ   Вверх
AHTUxPK
Дата 10.1.2012, 21:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 1.9.2011
Где: Пятигорск

Репутация: нет
Всего: нет



Подытожу всю работу кусочками кода:

Запускаем программу и возвращаем её pID.
Код

ChDrive Расположение_файла
ChDir Расположение_файла
pID = Shell(("название_файла.exe") & " " & параметры_запуска, 1)


Определяем hwnd по pID:
Модуль:
Код

Public Const GW_HWNDNEXT = 2
Public Declare Function GetParent Lib "user32" (ByVal hwnd As Long) As Long
Public Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Public Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Public Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwprocessid As Long) As Long

Function ProcIDFromWnd(ByVal hwnd As Long) As Long
   Dim idProc As Long
   
   ' Get PID for this HWnd
   GetWindowThreadProcessId hwnd, idProc
   
   ' Return PID
   ProcIDFromWnd = idProc
End Function
      
Function GetWinHandle(hInstance As Long) As Long
   Dim tempHwnd As Long
   
   ' Grab the first window handle that Windows finds:
   tempHwnd = FindWindow(vbNullString, vbNullString)
   
   ' Loop until you find a match or there are no more window handles:
   Do Until tempHwnd = 0
      ' Check if no parent for this window
      If GetParent(tempHwnd) = 0 Then
         ' Check for PID match
         If hInstance = ProcIDFromWnd(tempHwnd) Then
            ' Return found handle
            GetWinHandle = tempHwnd
            ' Exit search loop
            Exit Do
         End If
      End If
   
      ' Get the next window handle
      tempHwnd = GetWindow(tempHwnd, GW_HWNDNEXT)
   Loop
End Function

Кнопка:
Код

hwnd = GetWinHandle(pID)


Посылаем сочетание клавиш для закрытия консоли по hwnd:
Модуль: 
Код

Public Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Public Const VK_CONTROL = &H11
Public Const VK_C = &H43
Public Const WM_KEYDOWN = &H100
Public Const WM_KEYUP = &H101


И в код:
Код

Private Declare Sub Sleep Lib "kernel32" (ByVal milliseconds As Long)

Call keybd_event(VK_CONTROL, 0, 0, 0)
PostMessage hwnd, WM_KEYDOWN, VK_C, 0
Sleep (500) ' Можно и меньше, даже 100 прилично...
Call keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0)


Дмитрию большое спасибо за помощь.

Это сообщение отредактировал(а) AHTUxPK - 10.1.2012, 21:56
PM MAIL WWW ICQ   Вверх
AHTUxPK
Дата 15.2.2012, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 1.9.2011
Где: Пятигорск

Репутация: нет
Всего: нет



 smile У моей темы уже PR 1 даже стал, копипастят что ли активно, да простят меня модераторы за флуд) 

P.s. Никто так и не поможет с этой темой?(

Это сообщение отредактировал(а) AHTUxPK - 15.2.2012, 14:10
PM MAIL WWW ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0389 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.