Jump to content

CUI - GUI hybride question


FMS
 Share

Recommended Posts

Hello,

As I was searching this forum I came along something intresting what was new to me.
CUI/GUI hybrid.

Whish sounds very usefull to me to compile it all into 1 script.
So i was fideling around whit it but couldn't get it to work.

In the real script (not this simplified version) i got a lot of functions whish i can use whan talking to it by commandline and switches.

I could not get this to work and hope somebody could give me some pointers on how to make it work.

Also I was hoping iff somebody could help me whit the /? function?
(I don't know how to output the help text back to the commandline or the function that can help me do it)

please advice and thanks in advanced.

#AutoIt3Wrapper_UseUpx=n
#AutoIt3Wrapper_UseX64=n
#AutoIt3Wrapper_Change2CUI=y
#include <Process.au3>
#include <Array.au3>

If $CmdLine[0] = 0 Then
    If _ProcessGetName(ProcessGetParent(@AutoItPID)) = "cmd.exe" Then
        ;ConsoleWrite("Program was started in CMD" & @CRLF)
      If Mod($CmdLine[0], 2) <> 0 Then Exit MsgBox(16, $sTitle, "Invalid number of parameters! has to be a multiple of 2!")
      If $CmdLine[0] = 0 Then Exit MsgBox(16, $sTitle, "No parameters passed!")
      For $i = 1 To $CmdLine[0] Step 2
         If $CmdLine[$i] = "/switch" Then MsgBox(64, "Passed Parameters", "/switch is " & $CmdLine[$i+1])
         If $CmdLine[$i] = "/?" Then MsgBox(64, "Passed Parameters", "/? " )
       Next
      _ArrayDisplay($CmdLine)
    Else
      #include <ButtonConstants.au3>
      #include <GUIConstantsEx.au3>
      #include <WindowsConstants.au3>
      $Form1 = GUICreate("Form1", 239, 65, 192, 124)
      $Button1 = GUICtrlCreateButton("Button1", 32, 24, 75, 25)
      $Button2 = GUICtrlCreateButton("Button2", 120, 24, 75, 25)
      GUISetState(@SW_SHOW)

      While 1
         $nMsg = GUIGetMsg()
         Switch $nMsg
            Case $GUI_EVENT_CLOSE
               Exit
            Case $Button1
               button1()
            Case $button2
               button2()
         EndSwitch
      WEnd

    EndIf
EndIf

Exit

Func button1()
   MsgBox(16, "title", "button1()!")
EndFunc

Func button2()
   MsgBox(16, "title", "button1()!")
EndFunc

Func ProcessGetParent($i_PID) ;get PID from parent process done by SmOke_N
    Local $TH32CS_SNAPPROCESS = 0x00000002
    Local $a_tool_help = DllCall("Kernel32.dll", "long", "CreateToolhelp32Snapshot", "int", $TH32CS_SNAPPROCESS, "int", 0)
    If IsArray($a_tool_help) = 0 Or $a_tool_help[0] = -1 Then Return SetError(1, 0, $i_PID)
    Local $tagPROCESSENTRY32 = _
            DllStructCreate( _
            "dword dwsize;" & _
            "dword cntUsage;" & _
            "dword th32ProcessID;" & _
            "uint th32DefaultHeapID;" & _
            "dword th32ModuleID;" & _
            "dword cntThreads;" & _
            "dword th32ParentProcessID;" & _
            "long pcPriClassBase;" & _
            "dword dwFlags;" & _
            "char szExeFile[260]" _
            )
    DllStructSetData($tagPROCESSENTRY32, 1, DllStructGetSize($tagPROCESSENTRY32))
    Local $p_PROCESSENTRY32 = DllStructGetPtr($tagPROCESSENTRY32)
    Local $a_pfirst = DllCall("Kernel32.dll", "int", "Process32First", "long", $a_tool_help[0], "ptr", $p_PROCESSENTRY32)
    If IsArray($a_pfirst) = 0 Then Return SetError(2, 0, $i_PID)
    Local $a_pnext, $i_return = 0
    If DllStructGetData($tagPROCESSENTRY32, "th32ProcessID") = $i_PID Then
        $i_return = DllStructGetData($tagPROCESSENTRY32, "th32ParentProcessID")
        DllCall("Kernel32.dll", "int", "CloseHandle", "long", $a_tool_help[0])
        If $i_return Then Return $i_return
        Return $i_PID
    EndIf
    While @error = 0
        $a_pnext = DllCall("Kernel32.dll", "int", "Process32Next", "long", $a_tool_help[0], "ptr", $p_PROCESSENTRY32)
        If DllStructGetData($tagPROCESSENTRY32, "th32ProcessID") = $i_PID Then
            $i_return = DllStructGetData($tagPROCESSENTRY32, "th32ParentProcessID")
            If $i_return Then ExitLoop
            $i_return = $i_PID
            ExitLoop
        EndIf
    WEnd
    DllCall("Kernel32.dll", "int", "CloseHandle", "long", $a_tool_help[0])
    Return $i_return
EndFunc ;==>ProcessGetParent

 

as finishing touch god created the dutch

Link to comment
Share on other sites

Unless you compile it as console, it seems you're out of luck.

https://www.autoitscript.com/autoit3/docs/functions/ConsoleWrite.htm

Where did you see that info on hybrid CIU/GUI?

Found this. maybe it helps

 

Edited by careca
Spoiler

Renamer - Rename files and folders, remove portions of text from the filename etc.

GPO Tool - Export/Import Group policy settings.

MirrorDir - Synchronize/Backup/Mirror Folders

BeatsPlayer - Music player.

Params Tool - Right click an exe to see it's parameters or execute them.

String Trigger - Triggers pasting text or applications or internet links on specific strings.

Inconspicuous - Hide files in plain sight, not fully encrypted.

Regedit Control - Registry browsing history, quickly jump into any saved key.

Time4Shutdown - Write the time for shutdown in minutes.

Power Profiles Tool - Set a profile as active, delete, duplicate, export and import.

Finished Task Shutdown - Shuts down pc when specified window/Wndl/process closes.

NetworkSpeedShutdown - Shuts down pc if download speed goes under "X" Kb/s.

IUIAutomation - Topic with framework and examples

Au3Record.exe

Link to comment
Share on other sites

I guess the simplest way is to create one of each type. Or have the GUI show msgboxes with the according cmdline.

Spoiler

Renamer - Rename files and folders, remove portions of text from the filename etc.

GPO Tool - Export/Import Group policy settings.

MirrorDir - Synchronize/Backup/Mirror Folders

BeatsPlayer - Music player.

Params Tool - Right click an exe to see it's parameters or execute them.

String Trigger - Triggers pasting text or applications or internet links on specific strings.

Inconspicuous - Hide files in plain sight, not fully encrypted.

Regedit Control - Registry browsing history, quickly jump into any saved key.

Time4Shutdown - Write the time for shutdown in minutes.

Power Profiles Tool - Set a profile as active, delete, duplicate, export and import.

Finished Task Shutdown - Shuts down pc when specified window/Wndl/process closes.

NetworkSpeedShutdown - Shuts down pc if download speed goes under "X" Kb/s.

IUIAutomation - Topic with framework and examples

Au3Record.exe

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...