Есть Ли Возможность Запустить Агент По Ярлыку?

  • Автор темы Автор темы Serduko
  • Дата начала Дата начала
вывел список всех окон, там есть "Google - Microsoft Internet Explorer"
1047882.gif
 
Вы бы уточнили задачу. А то похоже из пушки по воробьям...
 
мб, внимательней: FindWindow(0,"Google - Windows Internet Explorer")
 
А может стоит по классу поискать!? Мой Internet Explorer (и 32-битный и 64-х) имеет класс "IEFrame" в Windows 7.
FindWindow( "IEFrame", NULL ) или что у вас там заместо NULL ...
 
Запускаю из 1Ски отчет CompanyMedia выводящийся в браузер, отчет запускается только в интерактиве(дизайн скрыт), необходимо, что бы браузер был перед глазами.
Спасибо OKEN, переклинило меня :newconfus: ЗАРАБОТАЛО!

Добавлено:
А может стоит по классу поискать!? Мой Internet Explorer (и 32-битный и 64-х) имеет класс "IEFrame" в Windows 7.
FindWindow( "IEFrame", NULL ) или что у вас там заместо NULL ...
Проблема в том, что может быть и не эксплорер...

Еще раз, благодарю всех :)
 
возьму весь список, потом найду по Like "Google*"
 
Отличная идея. Потом расскажи что получилось!
 
Блин, снова проблема, не могу заставить работать GetClassName, делаю следующим образом:

Код:
Declare Private Function GetClassName Lib "user32" Alias "GetClassNameA"(ByVal hwnd As long, ByVal lpClassName As string, ByVal nMaxCount As Long) As Long
Declare Private Function GetActiveWindow Lib "user32" () As Long

Dim buffer As String
Call GetClassName(GetActiveWindow, buffer, 100)
Print buffer

buffer пустой, если саму функу вывести дает "7". Может как то по другому объявлять buffer?
 
вопрос решен:

Код:
Declare Private Function GetClassName Lib "user32" Alias "GetClassNameA"(ByVal hwnd As long, ByVal lpClassName As string, ByVal nMaxCount As Long) As Long
Declare Private Function GetActiveWindow Lib "user32" () As Long

Dim buffer As String
buffer= Space(100)
Call GetClassName(GetActiveWindow, buffer, 100)
Print buffer
 
В общем получилось так:

Код:
Option Public
Option Declare

Declare Private Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long 
Declare Private Function GetWindowText Lib "user32" Alias "GetWindowTextA"(ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long 
Declare Private Function GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" (ByVal hwnd As Long) As Long
Declare Private Function GetActiveWindow Lib "user32" () As Long
Declare Private Function FindWindowA Lib "user32" (ByVal lpClassName As Any, ByVal lpWindowName As Any) As Long
Declare Private Function ShowWindow Lib "user32" Alias "ShowWindow"(ByVal lhwnd As Long, ByVal nCmdShow As Long) As Long
Declare Private Function GetClassName Lib "user32" Alias "GetClassNameA"(ByVal hwnd As long, ByVal lpClassName As string, ByVal nMaxCount As Long) As Long
Sub Initialize
Call ShowReportWindow
End Sub
Sub ShowReportWindow
Const GW_HWNDFIRST = 0 
Const GW_HWNDNEXT = 2 
Dim CurrWnd As Long
Dim Length As Integer
Dim ListItem As String
Dim WinClass As String

'Получаем hWnd, который будет первым в списке 
'через него, мы сможем отыскать другие задачи
CurrWnd = GetWindow(GetActiveWindow(), GW_HWNDFIRST) 
'Пока возвращаемый hWnd имеет смысл, выполняем цикл
Do While CurrWnd <> 0 
'Получаем длину имени задания по CurrW nd
Length = GetWindowTextLength(CurrWnd) 
'Получить имя задачи из списка 
ListItem = Space(Length + 1) 
Length = GetWindowText(CurrWnd, ListItem, Length + 1) 
'Если получили имя задачи, значит добавляем ее в список найденных 
If Length > 0 And ListItem Like "Перечень неисполненных поручений на контроле*" Then
WinClass = Space(100)
Call GetClassName(FindWindowA(0 ,ListItem), WinClass, 100)
Call ShowWindow(FindWindowA(WinClass,0), 3)
End If 
'Переходим к следующей задаче из списка 
CurrWnd = GetWindow(CurrWnd, GW_HWNDNEXT) 
DoEvents
Loop
End Sub

Поскольку IE имеет несколько окон в одном процессе, то вначале ищу имя класса, а только потом по классу максимизирую окно. Вывод списка хэндлов взят отсюда:
 
Это из стиля: "Мы не ищем лёгких путей!"

А вообще кто-то сказал что "Суп. Надо. Есть. Ложкой!". Это как раз к этой теме можно отнести.
Я бы с удовольствием помог, но никак не могу понять что именно хочет сделать автор.
 
Вообще то последний вариант рабочий, по просьбе lazybiz выложен. Что собственно не нравиться? WinAPI заморачиваюсь с прошлой недели, выложите код оптимальней, приму любую критику :rolleyes:...
 
Скажи конкретно, какое окно необходимо найти? Если одно из IE, то какой версии IE? Что в заголовке окна? По какому признаку? Или нужно найти активное окно? Опиши детально.

Зачем делать цикл? Do While CurrWnd <> 0
Зачем искать окно по имени, потом брать у него имя класса, потом поэтому классу искать окно?
Если заменить конструкцию:
Call GetClassName(FindWindowA(0 ,ListItem), WinClass, 100)
Call ShowWindow(FindWindowA(WinClass,0), 3)

на:
ShowWindow( FindWindowA(0 ,ListItem), 3 )

Эффект будет не тот же?
 
А вообще кто-то сказал что "Суп. Надо. Есть. Ложкой!". Это как раз к этой теме можно отнести.
Я бы с удовольствием помог, но никак не могу понять что именно хочет сделать автор.
Согласен, что суп лучше есть ложкой, но иногда заказчик хочет есть суп консервным ножом. И переубедить его не представляется возможным.
А что касается "что именно хочет сделать автор", link removed
Запускаю из 1Ски отчет CompanyMedia выводящийся в браузер, отчет запускается только в интерактиве(дизайн скрыт), необходимо, что бы браузер был перед глазами.
 
GetClassName возможно действительно не так нужен...

Вопрос лотусистам, вся эта байда запускается на Queryclose документа. Так вот, похоже после этой процедуры, Лотус возвращает окно клиента. Есть способ обойти это?


З.Ы. по поводу:
Если заменить конструкцию:
Call GetClassName(FindWindowA(0 ,ListItem), WinClass, 100)
Call ShowWindow(FindWindowA(WinClass,0), 3)

на:
ShowWindow( FindWindowA(0 ,ListItem), 3 )

Эффект будет не тот же?
В процессе решения проблемы, была такая мысль:
 
Вопрос лотусистам, вся эта байда запускается на Queryclose документа. Так вот, похоже после этой процедуры, Лотус возвращает окно клиента. Есть способ обойти это?
Объясните подробнее задачу, что в каком порядке должно открываться/закрываться.
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab