Jump to content

Custom Stream GUI Using Autoit Gui Wrap


rm4453
 Share

Recommended Posts

Hey guys! I need to find a way to wrap an autoit gui around a game. I am planning on making a custom gui overlay for interacting with my stream, which will allow me to run giveaways and stuff like that. But I need to find a way to force the steam games to run inside my autoit gui... I have the following code so far credit to those I took code from and modified to suite my needs "can't remember who u are pls post if i owe ty to u" If I select notepad and launch it then it works great! and the notepad window is wrapped inside my gui. However if I try it with teamfortress 2 it won't work...

 

#include <Array.au3>
#include <File.au3>
#include <WinAPI.au3>
#include <GUIConstants.au3>

Local $msg, $hwnd, $WinHwnd

;===> UDV Start

$pid = 0
$Hidden = 0
$exe = 0
$sDrive = 0
$sDir = 0
$sFileName = 0
$sExtension = 0

;===> UDV End


$hwnd = GUICreate("hello")
$Open = GUICtrlCreateButton("Launch Game", 10, 30, 75, 25)
$Select = GUICtrlCreateButton("Select Game", 10,60,75,25)
GUISetState()

;===> UDF START

Func _GetWinHwnd($pid)
    $aWinlist = WinList()
    For $i = 1 To $aWinlist[0][0]
        If $pid = WinGetProcess($aWinlist[$i][0]) Then Return $aWinlist[$i][0]
    Next
EndFunc   ;==>_GetWinHwnd


Func _SetParentWindow($pid)
    $WinInfo = _GetWinHwnd($pid)
    $WinHwnd = ControlGetHandle($WinInfo, "", "")

    _WinAPI_SetParent($WinHwnd, $hwnd)
    _WinAPI_SetWindowLong($WinHwnd, $GWL_STYLE, $WS_POPUP + $WS_VISIBLE)
    WinMove($WinHwnd, "", 0, 0)
EndFunc   ;==>_SetParentWindow

Func RedrawGui($RedrawMe)
    If ProcessExists($pid) And $Hidden = 0 Then
        GUICtrlSetState($RedrawMe, @SW_HIDE)
        $Hidden = 1
        sleep(50)
        _WinAPI_RedrawWindow($pid)
        Sleep(50)
    ElseIf $Hidden = 1 And Not ProcessExists($pid) Then
        GUICtrlSetState($RedrawMe, @SW_SHOW)
        $Hidden = 0
    EndIf
EndFunc


;===> UDF END

While 1
    $msg = GUIGetMsg()
    Switch $msg
        Case $GUI_EVENT_CLOSE
            If ProcessExists($pid) Then
                ProcessClose($pid)
                GUICtrlSetState($Open, @SW_SHOW)
            Else
                Exit
            EndIf

        Case $Open
            GUICtrlSetState($Open, @SW_HIDE)
            Sleep(100)
            $pid = Run('"' & $exe & '" -game tf -steam')
            
            #cs
            This RUN CMD is custom made for testing with TF2 change to just $exe to select any exe you want to test with
            -game tf specifies to launch tf2 and -steam gets rid of insecure mode error
            #ce
            
            RedrawGui($Open)
            ProcessWait($pid)
            Sleep(5500)
            _GetWinHwnd($pid)
            _SetParentWindow($pid)

        Case $Select
            $exe = FileOpenDialog("Please select your game!", @ScriptDir, "Executable File (*.exe)", "1", "Process Selection")
            Sleep(50)
            FileChangeDir(@ScriptDir)
            _PathSplit($exe, $sDrive, $sDir, $sFileName, $sExtension)
    EndSwitch


WEnd

 

Edited by rm4453
Link to comment
Share on other sites

  • Moderators

@rm4453 one would have thought that after 8 months on the forum and 45 posts you would have maybe given some thought to reading the forum rules, especially the part about game automation and how we're not going to support those questions. I suggest you do so now.

"Profanity is the last vestige of the feeble mind. For the man who cannot express himself forcibly through intellect must do so through shock and awe" - Spencer W. Kimball

How to get your question answered on this forum!

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share

×
×
  • Create New...