Войти

Показать полную графическую версию : окно поверх остальних окон


tasm
28-10-2018, 21:43
Всем доброго времени суток.
На работе визвалса сам решить задачу,так как простенькие задачи делал,а тут не все так просто
Есть задача переключаться между двома приложенниями Internet explorer и другая программа спецефическая, используется на производствах.
Запускается только в полноЭкранном режиме. Думал на ahk сделать две кнопки на экране и просто нажатием на нужную переключать,но...
Эта программа имеет класс окон с маской afx...И когда работаеш в программе оно меняет єтот клас окна как то по маске.
Сделал одну клавишу,симуляцию ALT+TAB,работает,но когда работаеш в етой программе,она пропадает иногда.(на некоторых компах быстрей пропадает на других
реже)помогите может можна что сделать на autoit.
Єто сделал на ahk ; Generated by SmartGUI Creater
Winset, AlwaysOnTop
Gui, +AlwaysOnTop -Caption +ToolWindow -Border
Gui, Color, 0B6300
GUI, font,, Verdana
GUI, font, bold
GUI, font, q5
GUI, font, c207EC4
GUI, font, s18
Gui, Add, Button, x16 y7 w140 h50, D-Check
Gui, Show, x190 y08 h60 w180, Generated using SmartGUI Creator
Return



ButtonD-Check:
send !{Tab}
Loop, 1 ;Провірка чи запущенний брайзер
{
IfWinNotExist, ahk_exe iexplore.exe
{
Run, iexplore.exe, , UseErrorLevel
if ErrorLevel
{
MsgBox, Скопируйте программу в корень рабочей папки и перезапустите приложение.
ExitApp
}
WinWait, ahk_exe iexplore.exe
}
Else
{
Continue
}
}

Loop, 1 ;Проверка на ошибки
{
IfWinExist, ahk_group Errors
WinClose, ahk_group Errors
else
continue
}
}
Return

GuiClose:
ExitApp

Вот что то с примера с рисовал.Ну много надо доделать...
#include <GUIConstantsEx.au3>

Example()

Func Example()
; Create a GUI with various controls.
Local $hGUI = GUICreate("Example", 300, 200)

; Create a button control.
Local $idButton_Notepad = GUICtrlCreateButton("Dcheck", 10, 10, 150, 150)
;Local $idButton_Close = GUICtrlCreateButton("Close", 210, 170, 85, 25)

; Display the GUI.
GUISetState(@SW_SHOW, $hGUI)

Local $iPID = 0

; Loop until the user exits.
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE ;$idButton_Notepad
ExitLoop
;$iPID = Send("#r")

Case $idButton_Notepad
; Run Notepad with the window maximized.
; Run Notepad with the window maximized.
;$$iPID = Run("notepad.exe", "", @SW_SHOWMAXIMIZED)
$iPID = Send("{LALT}{tab}")

EndSwitch
WEnd

; Delete the previous GUI and all controls.
GUIDelete($hGUI)

; Close the Notepad process using the PID returned by Run.
If $iPID Then ProcessClose($iPID)
EndFunc ;==>Example

1)Не могу с ємулировать нажатие ALT+TAB переключение между окнами.
2)Как сделать поверх все окон всегда его

tasm
28-10-2018, 22:16
Нашел скрипт очень подходящий
#include <WindowsConstants.au3>

$GUI = GUICreate("", 50, 30, 50, 50, $WS_POPUP, $WS_EX_TOOLWINDOW)
$Btn = GUICtrlCreateButton("Button", 0, 0, 50, 30)
GUISetState()

While 1
$Pos = WinGetPos("[class:Notepad]")
If @error Then
GUISetState(@SW_HIDE)
Else
GUISetState(@SW_SHOW)
WinMove($GUI, "", $Pos[0] + 150, $Pos[1] + 150)
WinSetOnTop($GUI, "", WinActive("[class:Notepad]") ? 1 : 0)
EndIf
If GUIGetMsg() = $Btn Then ControlSend("[class:Notepad]", "", "Edit1", "Click ")
WEnd


но как сделать чтоб он работал с классом окна типа afx....




© OSzone.net 2001-2012