Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 |

 

  Вопрос: О вызове чужих приложений в VB 6.0 Добавлено: 23.03.10 20:39  

Автор вопроса:  iprog | Web-сайт: usprogs.atheo-club.ru
Здравствуйте. У меня такая проблема: имею кнопку на форме и уже запущенное чужое приложение. По нажатию на кнопку это приложение должно оказаться в фокусе, то есть должно произойти то же самое, что при щелчке по значку какой-либо программы в Панели задач в Windows. Скажите, пожалуйста, как это сделать? Может, есть какие-то API-функции для этого? Заранее благодарен.

Ответить

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

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



Вопросов: 4
Ответов: 330
 Профиль | | #1 Добавлено: 23.03.10 22:31
1
  1.  
  2. AppActivate "заголовок проги"
  3. 'SendKeys "~" ' так нажать ентер



2
  1.  
  2. Private 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
  3. Private Const HWND_TOPMOST = -1
  4. Private Const SWP_NOSIZE = &H1
  5. Private Const SWP_NOMOVE = &H2
  6.  
  7. Private Sub Command1_Click()
  8. ' Перемещаем окно на передний план, используя манипулятор
  9. ' окна (Form1.hwnd). Функция также может изменять ширину,
  10. ' высоту, верхний и левый отступ на экране. Так как этого
  11. ' нам не требуется, мы используем флаги SWP_NOSIZE и SWP_NOMOVE,
  12. ' чтобы подавить изменение этих параметров.
  13.   Call SetWindowPos(Form1.hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE Or SWP_NOMOVE)
  14. End Sub


заместо Form1.hwnd надо найти хэндл окна которое на переднем плане хочешь показать

Ответить

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



ICQ: adamis@list.ru 

Вопросов: 153
Ответов: 3632
 Профиль | | #2 Добавлено: 24.03.10 10:17
ТопМост это не совсем то, нужны ФорэграундВиндоу, АктивВиндоу или чтото созвучное, непомню уже.

Ответить

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



Вопросов: 26
Ответов: 110
 Web-сайт: usprogs.atheo-club.ru
 Профиль | | #3
Добавлено: 24.03.10 21:01
Дело в том, что моей программе неизвестно название чужого приложения.

Ответить

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



Вопросов: 4
Ответов: 330
 Профиль | | #4 Добавлено: 24.03.10 21:34
произойти то же самое, что при щелчке по значку какой-либо программы в Панели задач в Windows

свернуть все окна? )

запоминай до щелчка какое окно активное (GetForegroundWindow) а после восстанавливай фокус (SetForegroundWindow)

моей программе неизвестно название чужого приложения

любая программа или просто неизвестно какое имя будет у exe?

Ответить

Номер ответа: 5
Автор ответа:
 Just



Вопросов: 4
Ответов: 330
 Профиль | | #5 Добавлено: 24.03.10 21:38
может это поможет...
http://www.vbnet.ru/faq/showtopic.asp?id=175

Ответить

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



Вопросов: 26
Ответов: 110
 Web-сайт: usprogs.atheo-club.ru
 Профиль | | #6
Добавлено: 25.03.10 18:37
Моей программе известен только путь и имя файла программы. В том коде, ссылку на который Вы мне дали, не совсем то, там производят действие над своей же программой. Хотя я думаю, можно использовать этот код, если известно название программы.

Ответить

Номер ответа: 7
Автор ответа:
 Серёга



ICQ: 262809473 

Вопросов: 17
Ответов: 561
 Web-сайт: houselab.narod.ru
 Профиль | | #7
Добавлено: 27.03.10 00:43
  1. Option Explicit
  2.  
  3. Private Const MAX_PATH As Long = 260
  4. Private Const GW_CHILD = 5
  5. Private Const GW_HWNDNEXT = 2
  6. Private Const GWL_HINSTANCE = (-6)
  7. Private Const PROCESS_QUERY_INFORMATION = 1024
  8. Private Const PROCESS_VM_READ = 16
  9. Private Const SW_NORMAL = 1
  10.  
  11. Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hWnd As Long, lpdwProcessId As Long) As Long
  12. Private Declare Sub CloseHandle Lib "kernel32" (ByVal hPass As Long)
  13. Private Declare Function GetWindow Lib "user32" (ByVal hWnd As Long, ByVal wCmd As Long) As Long
  14. Private Declare Function GetDesktopWindow Lib "user32" () As Long
  15. Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
  16. Private Declare Function GetModuleFileNameExA Lib "PSAPI.DLL" (ByVal hProcess As Long, ByVal hModule As Long, ByVal ModuleName As String, ByVal nSize As Long) As Long
  17. Private Declare Function OpenProcess Lib "Kernel32.dll" (ByVal dwDesiredAccessas As Long, ByVal bInheritHandle As Long, ByVal dwProcId As Long) As Long
  18. Private Declare Function ShowWindow Lib "user32" (ByVal hWnd As Long, ByVal nCmdShow As Long) As Long
  19. Private Declare Function SetForegroundWindow Lib "user32" (ByVal hWnd As Long) As Long
  20.  
  21. Private Sub Command1_Click()
  22. Dim hWnd As Long, s As String, hInst As Long, ProcessID As Long, hProcess As Long, l As Long
  23. hWnd = GetWindow(GetDesktopWindow, GW_CHILD)
  24. Do: DoEvents
  25.     If hWnd <> 0 Then
  26.         hInst = GetWindowLong(hWnd, GWL_HINSTANCE)
  27.         GetWindowThreadProcessId hWnd, ProcessID
  28.         hProcess = OpenProcess(PROCESS_QUERY_INFORMATION Or PROCESS_VM_READ, 0, ProcessID)
  29.         s = String(MAX_PATH, Chr(0))
  30.         l = GetModuleFileNameExA(hProcess, hInst, s, MAX_PATH)
  31.         s = Mid(s, 1, l)
  32.         CloseHandle hProcess
  33.         If UCase(s) = UCase(Text1.Text) Then
  34.             ShowWindow hWnd, SW_NORMAL
  35.             SetForegroundWindow hWnd
  36.         End If
  37.     End If
  38.     hWnd = GetWindow(hWnd, GW_HWNDNEXT)
  39.     If hWnd = 0 Then Exit Do
  40. Loop
  41. End Sub

Ответить

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



Вопросов: 26
Ответов: 110
 Web-сайт: usprogs.atheo-club.ru
 Профиль | | #8
Добавлено: 31.03.10 21:29
Извините, а что должно быть написано в Text1?

Ответить

Номер ответа: 9
Автор ответа:
 Серёга



ICQ: 262809473 

Вопросов: 17
Ответов: 561
 Web-сайт: houselab.narod.ru
 Профиль | | #9
Добавлено: 01.04.10 10:56
в text1 путь к проге. Типа: c:\windows\system32\notepad.exe

Ответить

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



ICQ: 357911808 

Вопросов: 118
Ответов: 1340
 Web-сайт: moscowdevils.ru
 Профиль | | #10
Добавлено: 03.04.10 20:58
а можно открыть файл с помощью известного приложения с заданным к файлу путём (например так (так в макросах Access'а
  1. access.exe d:\doc\Access\Test1Part1.mdb
))

Ответить

Страница: 1 |

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



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