Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 04/07/2020 in all areas

  1. 2 points
  2. Are you annoyed by the limitations of the standard Windows message dialog created by MsgBox? Would you like to have coloured backgrounds and text? To choose the justification and font? Do you want to be able to place the message box other than in the centre of the screen? Centred on your GUI, for example, or at a particular location on screen? What about having user-defined text on as many buttons as you need? And user-defined icons? Or a visible countdown of the timeout? Finally, would you like to choose whether the message box has a button on your already too-crowded taskbar? If the answer to any of these questions is "YES" then the ExtMsgBox UDF is for you! [NEW VERSION] 16 Feb 24 Changed: Some additional functionality added to the "TimeOut" parameter of _ExtMsgBox: - A positive integer sets the EMB timeout as before. - A negative integer will double the size of the countdown timer if it is used. - A colon-delimited string (eg: "10:5") will set the normal EMB timeout (first integer) and will also initially disable the EMB buttons for the required period (second integer). New UDF and examples in the zip. Older version changes: ChangeLog.txt As always, I realise nearly all of the DLL calls in these UDFs could be made by using commands in other UDFs like WinAPI.au3 - but as with all my UDFs (which you can find in my sig below) I am trying to prevent the need for any other include files. The UDF and examples (plus StringSize) in zip format: ExtMsgBox.zip Courteous comments and constructive criticisms welcome - guess which I prefer! M23
    1 point
  3. I love the help file and all the information it contains. Its fatal flaw is that it can't be added to. I create a lot of wrapper functions and install a lot of UDFs, so it gets tiring opening the include file each time I need to remember if it returns a 0 or 1 based array, what this particular error means, or what the argument should be. I've been fed up with this for too long, hence this script. Features Reads *.au3 files to parse UDF style headers to get function information (the UDF header style is defined here, thanks water!) Supports multiple search paths Integration with SciTe (more on this later) Stores function documentation so it doesn't need to re-read files each startup (Currently, in a config file) Only updates a file based on it's last modification date Will update another instance instead of launching a new one before exiting. Planned Updates Optionally (user's choice) use a SQLite Database to increase storage/read speeds Redirect unknown functions to AutoItHelper.exe to open the almighty Help File Remove functions from folders not in the search folders (would be a lot easier with SQLite) Fully support and parse UDF headers SciTE Integration This took me a while to figure out (I thought I needed to use lua), but it's totally worth it. By editing your "User Options File" aka SciTEUser.properties files, you can launch this file with a keyboard shortcut. I put this in mine: (After compiling) command.41.$(au3)="$(SciteDefaultHome)\..\FunctionDocs.exe" "$(CurrentWord)" command.name.41.$(au3)=Personal Function Docs command.shortcut.41.$(au3)=Shift+F1 command.subsystem.41.$(au3)=2 command.save.before.41.$(au3)=2 command.quiet.41.$(au3)=1 (Note that 41 is an unused command number. You may need to change this if you've added other tools) It says (respectively): * Launch FunctionDocs.exe from the directory above SciTE.exe with the currently selected word as a command line parameter * Make the MenuItem in SciTE named "Personal Function Docs" * Use Shift F1 as the shortcut to start the program * (I don't know) * Don't save the file before launching the program * (And my favorite) Don't clear SciTE's output panel
    1 point
  4. As posted in the other thread, however, you can use a scheduled task, and Water does have a UDF to help you get going with it. I would assume that you don't have to install the software immediately, but if you do, you could schedule it to run in 20 seconds or something similar.
    1 point
  5. $sRet = InputBox('Number', 'Enter number') If Not @error Then MsgBox(64, @ScriptName, 'Is Number: ' & _StringIsNumber($sRet)) EndIf Func _StringIsNumber($sString, $bFloat = True) Return StringIsDigit($sString) Or StringIsInt($sString) Or ($bFloat And StringIsFloat($sString)) ;Or as suggested by water ;Return String($sString) == Number($sString) EndFunc
    1 point
  6. Each language has its idiosyncrasies. The form is less important than the result. As long as we have the method to perform the task, I don't care how it is done. I have learned so many programming languages over the years, that it is not bothering to use one way or the other. What you are asking is kind of puerile. In my opinion, you are implying that everybody should speak english, because it would be nice to be all identical. It doesn't work that way.
    1 point
  7. Nearly there....You should also use Tidy to make it more readable. This is a shorter cleaned up version of your code: ;just an example may not be 100% accurate HotKeySet("{LCTRL}+d", "remap") Global $bool = False ;to toggle While 1 Sleep(25) WEnd Func remap() If $bool = False Then Send("{LCTRLDOWN}") MouseClick("right") Send("{LCTRLUP}") EndIf $bool = Not $bool EndFunc ;==>remap Jos
    1 point
  8. Try displaying the error message in the message box using winapi_getlasterrormessage() Edit: Make sure autoit is set to run as administrator in both the shortcut and all executables and add #RequireAdmin to the top of the script. Edit edit!! Upon further evaluation of your posted code. .. . The token of the calling process should have the same access rights as the user who started the process so if its failing then you may not have the necessary rights to access the process. edit edit edit. I'm fairly certain its a rights issue. I ran into similar problems with readprocessmemory. ;this is from the winapi function that reads the commandline information. It sets up a couple dllstructs then proceeds to start pulling ;information from them ; ;this is the second call that attempts to read the process memory... $aRet = DllCall('kernel32.dll', 'bool', 'ReadProcessMemory', 'handle', $hProcess, _ 'ptr', DllStructGetData($tPBI, 'PebBaseAddress'), 'struct*', $tPEB, _ 'ulong_ptr', DllStructGetSize($tPEB), 'ulong_ptr*', 0) If @error Or Not $aRet[0] Or (Not $aRet[5]) Then $iError = @error + 40 ExitLoop EndIf ;$iError is set to @error+40 which @error is zero by default so i'd assume that would equal 40 You definitely need the required privileges to read a different process memory so im fairly certain that is the issue
    1 point
  9. @Chimp Amazing work! Thank you for the update! I will test it out. My honest opinion, this UDF is so underrated, I hope more people will discover this and can benefit from it.
    1 point
  10. wolf9228

    Free C++ Compiler

    The code contains the command lines of the Free C ++ Compiler by simplifying the work on the Free C ++ Compiler via the Autoit script. There are several examples of creating dll files, executable files, and also dll libraries Initially, download the Free C ++ Compiler from its official website after Free registering with this link. https://www.embarcadero.com/free-tools/ccompiler Free C++ Compiler The BCC32C/BCC32X Compiler is the high performance foundation and core technology of Embarcadero's award-winning C++Builder product line. some notes For Bat.bat File All errors and notices appear on the Ms-dos data The _wpopen function cannot show errors that the C++ Compiler application returns /// (BCC32C.exe) ///" This also occurs on the Autoit StderrRead function Thanks Compiler.zip yProject.cpp #include <stdio.h> #include <shlobj.h> #ifdef __cplusplus extern "C" { #endif __declspec(dllexport) DWORD WINAPI Func(DWORD NumA,DWORD NumB); #ifdef __cplusplus } #endif BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { switch (ul_reason_for_call) { case DLL_PROCESS_ATTACH: case DLL_THREAD_ATTACH: case DLL_THREAD_DETACH: case DLL_PROCESS_DETACH: break; } return TRUE; } DWORD WINAPI Func(DWORD NumA,DWORD NumB) { return (NumA + NumB); } Project.cpp #include <windows.h> #include <stdio.h> HWND yButton; LRESULT CALLBACK GuiProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam); static TCHAR szWindowClass[] = ("win32app"); static TCHAR szTitle[] = ("Gui Win32 Application"); HINSTANCE hInst; int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { WNDCLASSEX wcex; wcex.cbSize = sizeof(WNDCLASSEX); wcex.style = CS_HREDRAW | CS_VREDRAW; wcex.lpfnWndProc = GuiProc; wcex.cbClsExtra = 0; wcex.cbWndExtra = 0; wcex.hInstance = hInstance; wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_APPLICATION)); wcex.hCursor = LoadCursor(NULL, IDC_ARROW); wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); wcex.lpszMenuName = NULL; wcex.lpszClassName = szWindowClass; wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_APPLICATION)); RegisterClassEx(&wcex); HWND hWnd = CreateWindow(szWindowClass,szTitle,WS_OVERLAPPEDWINDOW|WS_VISIBLE,0,0,200,200,0,0,hInstance,0); yButton = CreateWindowEx(0,"Button","yButton",WS_TABSTOP|WS_CHILD|BS_NOTIFY|WS_VISIBLE,10,10,80,40,hWnd,0,hInstance,0); MSG msg; while (GetMessage(&msg,0,0,0)) { if (!TranslateAccelerator(msg.hwnd,0,&msg)) { TranslateMessage(&msg); DispatchMessage(&msg); } } return 0; } LRESULT CALLBACK GuiProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam) { switch (message) { case WM_COMMAND: switch (HIWORD(wParam)) { case BN_CLICKED: if ((HWND) lParam == yButton) { MessageBox(0,"yButton","MSG",0); } break; } break; case WM_PAINT: break; case WM_DESTROY: PostQuitMessage(0); break; } return DefWindowProc(hWnd, message, wParam, lParam); } yProject_Error.cpp #include <windows.h> #include <stdio.h> // Here Error Error HWND yButton; LRESULT CALLBACK GuiProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam); static TCHAR szWindowClass[] = ("win32app"); static TCHAR szTitle[] = ("Gui Win32 Application"); HINSTANCE hInst; int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { WNDCLASSEX wcex; wcex.cbSize = sizeof(WNDCLASSEX); wcex.style = CS_HREDRAW | CS_VREDRAW; wcex.lpfnWndProc = GuiProc; wcex.cbClsExtra = 0; wcex.cbWndExtra = 0; wcex.hInstance = hInstance; wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_APPLICATION)); wcex.hCursor = LoadCursor(NULL, IDC_ARROW); wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); wcex.lpszMenuName = NULL; wcex.lpszClassName = szWindowClass; wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_APPLICATION)); RegisterClassEx(&wcex); HWND hWnd = CreateWindow(szWindowClass,szTitle,WS_OVERLAPPEDWINDOW|WS_VISIBLE,0,0,200,200,0,0,hInstance,0); yButton = CreateWindowEx(0,"Button","yButton",WS_TABSTOP|WS_CHILD|BS_NOTIFY|WS_VISIBLE,10,10,80,40,hWnd,0,hInstance,0); MSG msg; while (GetMessage(&msg,0,0,0)) { if (!TranslateAccelerator(msg.hwnd,0,&msg)) { TranslateMessage(&msg); DispatchMessage(&msg); } } return 0; } LRESULT CALLBACK GuiProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam) { switch (message) { case WM_COMMAND: switch (HIWORD(wParam)) { case BN_CLICKED: if ((HWND) lParam == yButton) { MessageBox(0,"yButton","MSG",0); } break; } break; case WM_PAINT: break; case WM_DESTROY: PostQuitMessage(0); break; } return DefWindowProc(hWnd, message, wParam, lParam); } Exe_Wthe_Bat.au3 ;https://www.embarcadero.com/free-tools/ccompiler ;Free C++ Compiler ;The BCC32C/BCC32X Compiler is the high performance foundation and core technology of Embarcadero's ;award-winning C++Builder product line. ;This free download of the C++ Compiler for C++Builder includes C11 language support, the Dinkumware STL ;(Standard Template Library) framework, and the complete Embarcadero C/C++ Runtime Library (RTL). In this ;free version, you’ll also find a number of C/C++ command line tools—such as the high-performance linker ;and resource compiler. ;The Free C++ Compiler download includes: ;Embarcadero C++ Compiler (bcc32c/bcc32x) ;Turbo Incremental Linker (tlink32) ;C++ Win32 Preprocessor (cpp32) ;Import Library utility—for creating import libraries from DLLs (implib) ;Librarian for symbol case-conversion, creating extended libraries and modifying page size (tlib) ;Other useful command-line utilities such as make, grep, and touch ;Includes the Embarcadero C/C++ Runtime Library, and the DinkumwareANSI/ISO Standard Template Library (STL) ;bcc32c-101-Berlin-screenshot ;C++Builder includes compilers for Win64, macOS, iOS, and Android. And, C++Builder also features a modern, ;high-productivity RAD Studio IDE, debugger tools, and enterprise connectivity for to accelerate cross-platform ;UI development. Learn more about RAD Studio on its product page. ;C++ is avilable in three editions - Free, Community or Pro/Enterprise/Architect. Global $VisualStyles = True , $BCC102 = "D:\BCC102", $compExe = "bcc32c.exe" ; $compExe compiled Exe File Name Global $PFile = $BCC102 & "\Project.cpp" ; C++ File Global $NewFile = "NewFile" ; New Out File Global $Exe_Dll = 1 ; /// 1 Exe File /// 2 Dll File // Else Numbers Choose One Switch $Exe_Dll Case 1 $FType = ".exe " $TCod = " -tW " ; Exe File Command Case 2 $FType = ".dll " $TCod = " -tWD " ; Dll File Command Case Else $Gui = GUICreate("compiled", 210 + 150, 80) GUICtrlCreateLabel("Please Choose One!", 10, 10) $Exe = GUICtrlCreateButton("Exe File", 10, 50, 100, 23) $DLL = GUICtrlCreateButton("Dll File", 80 + 50, 50, 100, 23) $Ext = GUICtrlCreateButton("Exit", 150 + 100, 50, 100, 23) GUISetState() While 1 $iMsg = GUIGetMsg() Select Case $iMsg = $Exe $FType = ".exe " $TCod = " -tW " ; Exe File Command ExitLoop Case $iMsg = $DLL $FType = ".dll " $TCod = " -tWD " ; Dll File Command ExitLoop Case $iMsg = -3 Or $iMsg = $Ext ; $GUI_EVENT_CLOSE = -3 Exit EndSelect WEnd GUIDelete($Gui) EndSwitch $Dir = @ScriptDir $yCompiled_File = $BCC102 & "\Bin\" & $compExe if Not FileExists($yCompiled_File) Then $BCC102 = FileSelectFolder("Choose BCC102","C:\") if @error Then Exit if Not FileExists($PFile) Then $PFile = FileOpenDialog("Choose C++ File",$Dir,"(*.cpp)",5) if @error Then Exit $NewFile &= $FType FileChangeDir($BCC102) $PFile = FileGetShortName($PFile) $Command = "Bin\" & $compExe & $TCod & "-IInclude -LLib -e" & $NewFile & $PFile & @CRLF & "Pause" if FileExists("Batch.bat") And Not FileDelete("Batch.bat") Then Exit FileWrite("Batch.bat",$Command) RunWait("Batch.bat") if $VisualStyles Then ;Enabling Visual Styles ;https://docs.microsoft.com/en-us/windows/win32/controls/cookbook-overview $ManiText = _ '<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">' & @CRLF & _ '<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">' & @CRLF & _ ' <security>' & @CRLF & _ ' <requestedPrivileges>' & @CRLF & _ ' <requestedExecutionLevel level="asInvoker" uiAccess="false">'& @CRLF & _ ' </requestedExecutionLevel>' & @CRLF & _ ' </requestedPrivileges>' & @CRLF & _ ' </security>' & @CRLF & _ ' </trustInfo>' & @CRLF & _ ' <dependency>' & @CRLF & _ ' <dependentAssembly>' & @CRLF & _ ' <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" language="*" processorArchitecture="*" publicKeyToken="6595b64144ccf1df"></assemblyIdentity>' & @CRLF & _ ' </dependentAssembly>' & @CRLF & _ ' </dependency>' & @CRLF & _ '</assembly>' $RT_MANIFEST = 24 $vDataStruct = StringToDataStruct($ManiText) $vlpData = DllStructGetPtr($vDataStruct) $vcbData = DllStructGetSize($vDataStruct) UpdateResource($NewFile,$RT_MANIFEST,1,$vlpData,$vcbData) EndIf Sleep(300) RunWait($NewFile) ShellExecute($BCC102) Func StringToDataStruct($Text) $Len = StringLen($Text) if $Len = 0 Then $Len = 1 $DataStruct = DllStructCreate("char[" & $Len & "]") DllStructSetData($DataStruct,1,$Text) Return $DataStruct EndFunc Func UpdateResource($Dll_Exe_File,$lpType,$lpName,$lpData,$cbData) $Handle = DllCall("kernel32.dll","HANDLE","BeginUpdateResourceW","wstr",$Dll_Exe_File,"BOOL",False) if @error Or $Handle[0] = 0 Then Return SetError(1,0,False) $Handle = $Handle[0] Select Case IsString($lpType) $DTypeA = "wstr" $lpType = StringUpper($lpType) Case Else $DTypeA = "long" $lpType = Int($lpType) EndSelect Select Case IsString($lpName) $DTypeB = "wstr" $lpName = StringUpper($lpName) Case Else $DTypeB = "long" $lpName = Int($lpName) EndSelect $BOOL = DllCall("kernel32.dll","BOOL","UpdateResourceW","HANDLE",$Handle,$DTypeA _ ,$lpType,$DTypeB,$lpName,"WORD",0,"ptr",$lpData,"DWORD",$cbData) if @error Or $BOOL[0] = 0 Then Return SetError(2,0,False) $BOOL = DllCall("kernel32.dll","BOOL","EndUpdateResourceW","HANDLE",$Handle,"BOOL",False) if @error Or $BOOL[0] = 0 Then Return SetError(3,0,False) Return SetError(0,0,True) EndFunc Exe_Wthe_wpopen.au3 $MsvcrtDll = DllOpen("Msvcrt.Dll") ;https://www.embarcadero.com/free-tools/ccompiler ;Free C++ Compiler ;The BCC32C/BCC32X Compiler is the high performance foundation and core technology of Embarcadero's ;award-winning C++Builder product line. ;This free download of the C++ Compiler for C++Builder includes C11 language support, the Dinkumware STL ;(Standard Template Library) framework, and the complete Embarcadero C/C++ Runtime Library (RTL). In this ;free version, you’ll also find a number of C/C++ command line tools—such as the high-performance linker ;and resource compiler. ;The Free C++ Compiler download includes: ;Embarcadero C++ Compiler (bcc32c/bcc32x) ;Turbo Incremental Linker (tlink32) ;C++ Win32 Preprocessor (cpp32) ;Import Library utility—for creating import libraries from DLLs (implib) ;Librarian for symbol case-conversion, creating extended libraries and modifying page size (tlib) ;Other useful command-line utilities such as make, grep, and touch ;Includes the Embarcadero C/C++ Runtime Library, and the DinkumwareANSI/ISO Standard Template Library (STL) ;bcc32c-101-Berlin-screenshot ;C++Builder includes compilers for Win64, macOS, iOS, and Android. And, C++Builder also features a modern, ;high-productivity RAD Studio IDE, debugger tools, and enterprise connectivity for to accelerate cross-platform ;UI development. Learn more about RAD Studio on its product page. ;C++ is avilable in three editions - Free, Community or Pro/Enterprise/Architect. Global $VisualStyles = True , $BCC102 = "D:\BCC102", $compExe = "bcc32c.exe" ; $compExe compiled Exe File Name Global $PFile = $BCC102 & "\Project.cpp" ; C++ File Global $NewFile = "NewFile" ; New Out File Global $Exe_Dll = 1 ; /// 1 Exe File /// 2 Dll File // Else Numbers Choose One Switch $Exe_Dll Case 1 $FType = ".exe " $TCod = " -tW " ; Exe File Command Case 2 $FType = ".dll " $TCod = " -tWD " ; Dll File Command Case Else $Gui = GUICreate("compiled", 210 + 150, 80) GUICtrlCreateLabel("Please Choose One!", 10, 10) $Exe = GUICtrlCreateButton("Exe File", 10, 50, 100, 23) $DLL = GUICtrlCreateButton("Dll File", 80 + 50, 50, 100, 23) $Ext = GUICtrlCreateButton("Exit", 150 + 100, 50, 100, 23) GUISetState() While 1 $iMsg = GUIGetMsg() Select Case $iMsg = $Exe $FType = ".exe " $TCod = " -tW " ; Exe File Command ExitLoop Case $iMsg = $DLL $FType = ".dll " $TCod = " -tWD " ; Dll File Command ExitLoop Case $iMsg = -3 Or $iMsg = $Ext ; $GUI_EVENT_CLOSE = -3 Exit EndSelect WEnd GUIDelete($Gui) EndSwitch $Dir = @ScriptDir $yCompiled_File = $BCC102 & "\Bin\" & $compExe if Not FileExists($yCompiled_File) Then $BCC102 = FileSelectFolder("Choose BCC102","C:\") if @error Then Exit if Not FileExists($PFile) Then $PFile = FileOpenDialog("Choose C++ File",$Dir,"(*.cpp)",5) if @error Then Exit $NewFile &= $FType FileChangeDir($BCC102) $Command = "Bin\" & $compExe & $TCod & "-IInclude -LLib -e" & $NewFile & $PFile Local $Buffer = DllStructCreate("wchar[1024]") , $Text = "" $Return = DllCall($MsvcrtDll,"ptr:cdecl","_wpopen","wstr",$Command,"wstr","rt") if @error Or $Return[0] = 0 Then Exit $pPipe = $Return[0] while 1 $Return = DllCall($MsvcrtDll,"ptr:cdecl","fgetws","STRUCT*",$Buffer,"int",1024,"ptr",$pPipe) $Text &= DllStructGetData($Buffer,1) if Not $Return[0] Then ExitLoop WEnd MsgBox(0,"",$Text) if $VisualStyles Then ;Enabling Visual Styles ;https://docs.microsoft.com/en-us/windows/win32/controls/cookbook-overview $ManiText = _ '<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">' & @CRLF & _ '<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">' & @CRLF & _ ' <security>' & @CRLF & _ ' <requestedPrivileges>' & @CRLF & _ ' <requestedExecutionLevel level="asInvoker" uiAccess="false">'& @CRLF & _ ' </requestedExecutionLevel>' & @CRLF & _ ' </requestedPrivileges>' & @CRLF & _ ' </security>' & @CRLF & _ ' </trustInfo>' & @CRLF & _ ' <dependency>' & @CRLF & _ ' <dependentAssembly>' & @CRLF & _ ' <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" language="*" processorArchitecture="*" publicKeyToken="6595b64144ccf1df"></assemblyIdentity>' & @CRLF & _ ' </dependentAssembly>' & @CRLF & _ ' </dependency>' & @CRLF & _ '</assembly>' $RT_MANIFEST = 24 $vDataStruct = StringToDataStruct($ManiText) $vlpData = DllStructGetPtr($vDataStruct) $vcbData = DllStructGetSize($vDataStruct) UpdateResource($NewFile,$RT_MANIFEST,1,$vlpData,$vcbData) EndIf Sleep(300) RunWait($NewFile) ShellExecute($BCC102) Func StringToDataStruct($Text) $Len = StringLen($Text) if $Len = 0 Then $Len = 1 $DataStruct = DllStructCreate("char[" & $Len & "]") DllStructSetData($DataStruct,1,$Text) Return $DataStruct EndFunc Func UpdateResource($Dll_Exe_File,$lpType,$lpName,$lpData,$cbData) $Handle = DllCall("kernel32.dll","HANDLE","BeginUpdateResourceW","wstr",$Dll_Exe_File,"BOOL",False) if @error Or $Handle[0] = 0 Then Return SetError(1,0,False) $Handle = $Handle[0] Select Case IsString($lpType) $DTypeA = "wstr" $lpType = StringUpper($lpType) Case Else $DTypeA = "long" $lpType = Int($lpType) EndSelect Select Case IsString($lpName) $DTypeB = "wstr" $lpName = StringUpper($lpName) Case Else $DTypeB = "long" $lpName = Int($lpName) EndSelect $BOOL = DllCall("kernel32.dll","BOOL","UpdateResourceW","HANDLE",$Handle,$DTypeA _ ,$lpType,$DTypeB,$lpName,"WORD",0,"ptr",$lpData,"DWORD",$cbData) if @error Or $BOOL[0] = 0 Then Return SetError(2,0,False) $BOOL = DllCall("kernel32.dll","BOOL","EndUpdateResourceW","HANDLE",$Handle,"BOOL",False) if @error Or $BOOL[0] = 0 Then Return SetError(3,0,False) Return SetError(0,0,True) EndFunc Dll_Wthe_Bat.au3 ;https://www.embarcadero.com/free-tools/ccompiler ;Free C++ Compiler ;The BCC32C/BCC32X Compiler is the high performance foundation and core technology of Embarcadero's ;award-winning C++Builder product line. ;This free download of the C++ Compiler for C++Builder includes C11 language support, the Dinkumware STL ;(Standard Template Library) framework, and the complete Embarcadero C/C++ Runtime Library (RTL). In this ;free version, you’ll also find a number of C/C++ command line tools—such as the high-performance linker ;and resource compiler. ;The Free C++ Compiler download includes: ;Embarcadero C++ Compiler (bcc32c/bcc32x) ;Turbo Incremental Linker (tlink32) ;C++ Win32 Preprocessor (cpp32) ;Import Library utility—for creating import libraries from DLLs (implib) ;Librarian for symbol case-conversion, creating extended libraries and modifying page size (tlib) ;Other useful command-line utilities such as make, grep, and touch ;Includes the Embarcadero C/C++ Runtime Library, and the DinkumwareANSI/ISO Standard Template Library (STL) ;bcc32c-101-Berlin-screenshot ;C++Builder includes compilers for Win64, macOS, iOS, and Android. And, C++Builder also features a modern, ;high-productivity RAD Studio IDE, debugger tools, and enterprise connectivity for to accelerate cross-platform ;UI development. Learn more about RAD Studio on its product page. ;C++ is avilable in three editions - Free, Community or Pro/Enterprise/Architect. Global $VisualStyles = True , $BCC102 = "D:\BCC102", $compExe = "bcc32c.exe" ; $compExe compiled Exe File Name Global $PFile = $BCC102 & "\yProject.cpp" ; C++ File Global $NewFile = "NewFile" ; New Out File Global $Exe_Dll = 2 ; /// 1 Exe File /// 2 Dll File // Else Numbers Choose One Switch $Exe_Dll Case 1 $FType = ".exe " $TCod = " -tW " ; Exe File Command Case 2 $FType = ".dll " $TCod = " -tWD " ; Dll File Command Case Else $Gui = GUICreate("compiled", 210 + 150, 80) GUICtrlCreateLabel("Please Choose One!", 10, 10) $Exe = GUICtrlCreateButton("Exe File", 10, 50, 100, 23) $DLL = GUICtrlCreateButton("Dll File", 80 + 50, 50, 100, 23) $Ext = GUICtrlCreateButton("Exit", 150 + 100, 50, 100, 23) GUISetState() While 1 $iMsg = GUIGetMsg() Select Case $iMsg = $Exe $FType = ".exe " $TCod = " -tW " ; Exe File Command ExitLoop Case $iMsg = $DLL $FType = ".dll " $TCod = " -tWD " ; Dll File Command ExitLoop Case $iMsg = -3 Or $iMsg = $Ext ; $GUI_EVENT_CLOSE = -3 Exit EndSelect WEnd GUIDelete($Gui) EndSwitch $Dir = @ScriptDir $yCompiled_File = $BCC102 & "\Bin\" & $compExe if Not FileExists($yCompiled_File) Then $BCC102 = FileSelectFolder("Choose BCC102","C:\") if @error Then Exit if Not FileExists($PFile) Then $PFile = FileOpenDialog("Choose C++ File",$Dir,"(*.cpp)",5) if @error Then Exit $NewFile &= $FType FileChangeDir($BCC102) $PFile = FileGetShortName($PFile) $Command = "Bin\" & $compExe & $TCod & "-IInclude -LLib -e" & $NewFile & $PFile & @CRLF & "Pause" if FileExists("Batch.bat") And Not FileDelete("Batch.bat") Then Exit FileWrite("Batch.bat",$Command) RunWait("Batch.bat") if $VisualStyles Then ;Enabling Visual Styles ;https://docs.microsoft.com/en-us/windows/win32/controls/cookbook-overview $ManiText = _ '<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">' & @CRLF & _ '<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">' & @CRLF & _ ' <security>' & @CRLF & _ ' <requestedPrivileges>' & @CRLF & _ ' <requestedExecutionLevel level="asInvoker" uiAccess="false">'& @CRLF & _ ' </requestedExecutionLevel>' & @CRLF & _ ' </requestedPrivileges>' & @CRLF & _ ' </security>' & @CRLF & _ ' </trustInfo>' & @CRLF & _ ' <dependency>' & @CRLF & _ ' <dependentAssembly>' & @CRLF & _ ' <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" language="*" processorArchitecture="*" publicKeyToken="6595b64144ccf1df"></assemblyIdentity>' & @CRLF & _ ' </dependentAssembly>' & @CRLF & _ ' </dependency>' & @CRLF & _ '</assembly>' $RT_MANIFEST = 24 $vDataStruct = StringToDataStruct($ManiText) $vlpData = DllStructGetPtr($vDataStruct) $vcbData = DllStructGetSize($vDataStruct) UpdateResource($NewFile,$RT_MANIFEST,1,$vlpData,$vcbData) EndIf Sleep(300) $Return = DllCall($NewFile,"DWORD","Func","DWORD",5,"DWORD",5) MsgBox(0,"Func Call",$Return[0]) ShellExecute($BCC102) Func StringToDataStruct($Text) $Len = StringLen($Text) if $Len = 0 Then $Len = 1 $DataStruct = DllStructCreate("char[" & $Len & "]") DllStructSetData($DataStruct,1,$Text) Return $DataStruct EndFunc Func UpdateResource($Dll_Exe_File,$lpType,$lpName,$lpData,$cbData) $Handle = DllCall("kernel32.dll","HANDLE","BeginUpdateResourceW","wstr",$Dll_Exe_File,"BOOL",False) if @error Or $Handle[0] = 0 Then Return SetError(1,0,False) $Handle = $Handle[0] Select Case IsString($lpType) $DTypeA = "wstr" $lpType = StringUpper($lpType) Case Else $DTypeA = "long" $lpType = Int($lpType) EndSelect Select Case IsString($lpName) $DTypeB = "wstr" $lpName = StringUpper($lpName) Case Else $DTypeB = "long" $lpName = Int($lpName) EndSelect $BOOL = DllCall("kernel32.dll","BOOL","UpdateResourceW","HANDLE",$Handle,$DTypeA _ ,$lpType,$DTypeB,$lpName,"WORD",0,"ptr",$lpData,"DWORD",$cbData) if @error Or $BOOL[0] = 0 Then Return SetError(2,0,False) $BOOL = DllCall("kernel32.dll","BOOL","EndUpdateResourceW","HANDLE",$Handle,"BOOL",False) if @error Or $BOOL[0] = 0 Then Return SetError(3,0,False) Return SetError(0,0,True) EndFunc Dll_Wthe_wpopen.au3 $MsvcrtDll = DllOpen("Msvcrt.Dll") ;https://www.embarcadero.com/free-tools/ccompiler ;Free C++ Compiler ;The BCC32C/BCC32X Compiler is the high performance foundation and core technology of Embarcadero's ;award-winning C++Builder product line. ;This free download of the C++ Compiler for C++Builder includes C11 language support, the Dinkumware STL ;(Standard Template Library) framework, and the complete Embarcadero C/C++ Runtime Library (RTL). In this ;free version, you’ll also find a number of C/C++ command line tools—such as the high-performance linker ;and resource compiler. ;The Free C++ Compiler download includes: ;Embarcadero C++ Compiler (bcc32c/bcc32x) ;Turbo Incremental Linker (tlink32) ;C++ Win32 Preprocessor (cpp32) ;Import Library utility—for creating import libraries from DLLs (implib) ;Librarian for symbol case-conversion, creating extended libraries and modifying page size (tlib) ;Other useful command-line utilities such as make, grep, and touch ;Includes the Embarcadero C/C++ Runtime Library, and the DinkumwareANSI/ISO Standard Template Library (STL) ;bcc32c-101-Berlin-screenshot ;C++Builder includes compilers for Win64, macOS, iOS, and Android. And, C++Builder also features a modern, ;high-productivity RAD Studio IDE, debugger tools, and enterprise connectivity for to accelerate cross-platform ;UI development. Learn more about RAD Studio on its product page. ;C++ is avilable in three editions - Free, Community or Pro/Enterprise/Architect. Global $VisualStyles = True , $BCC102 = "D:\BCC102", $compExe = "bcc32c.exe" ; $compExe compiled Exe File Name Global $PFile = $BCC102 & "\yProject.cpp" ; C++ File Global $NewFile = "NewFile" ; New Out File Global $Exe_Dll = 2 ; /// 1 Exe File /// 2 Dll File // Else Numbers Choose One Switch $Exe_Dll Case 1 $FType = ".exe " $TCod = " -tW " ; Exe File Command Case 2 $FType = ".dll " $TCod = " -tWD " ; Dll File Command Case Else $Gui = GUICreate("compiled", 210 + 150, 80) GUICtrlCreateLabel("Please Choose One!", 10, 10) $Exe = GUICtrlCreateButton("Exe File", 10, 50, 100, 23) $DLL = GUICtrlCreateButton("Dll File", 80 + 50, 50, 100, 23) $Ext = GUICtrlCreateButton("Exit", 150 + 100, 50, 100, 23) GUISetState() While 1 $iMsg = GUIGetMsg() Select Case $iMsg = $Exe $FType = ".exe " $TCod = " -tW " ; Exe File Command ExitLoop Case $iMsg = $DLL $FType = ".dll " $TCod = " -tWD " ; Dll File Command ExitLoop Case $iMsg = -3 Or $iMsg = $Ext ; $GUI_EVENT_CLOSE = -3 Exit EndSelect WEnd GUIDelete($Gui) EndSwitch $Dir = @ScriptDir $yCompiled_File = $BCC102 & "\Bin\" & $compExe if Not FileExists($yCompiled_File) Then $BCC102 = FileSelectFolder("Choose BCC102","C:\") if @error Then Exit if Not FileExists($PFile) Then $PFile = FileOpenDialog("Choose C++ File",$Dir,"(*.cpp)",5) if @error Then Exit $NewFile &= $FType FileChangeDir($BCC102) $Command = "Bin\" & $compExe & $TCod & "-IInclude -LLib -e" & $NewFile & $PFile Local $Buffer = DllStructCreate("wchar[1024]") , $Text = "" $Return = DllCall($MsvcrtDll,"ptr:cdecl","_wpopen","wstr",$Command,"wstr","rt") if @error Or $Return[0] = 0 Then Exit $pPipe = $Return[0] while 1 $Return = DllCall($MsvcrtDll,"ptr:cdecl","fgetws","STRUCT*",$Buffer,"int",1024,"ptr",$pPipe) $Text &= DllStructGetData($Buffer,1) if Not $Return[0] Then ExitLoop WEnd MsgBox(0,"",$Text) if $VisualStyles Then ;Enabling Visual Styles ;https://docs.microsoft.com/en-us/windows/win32/controls/cookbook-overview $ManiText = _ '<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">' & @CRLF & _ '<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">' & @CRLF & _ ' <security>' & @CRLF & _ ' <requestedPrivileges>' & @CRLF & _ ' <requestedExecutionLevel level="asInvoker" uiAccess="false">'& @CRLF & _ ' </requestedExecutionLevel>' & @CRLF & _ ' </requestedPrivileges>' & @CRLF & _ ' </security>' & @CRLF & _ ' </trustInfo>' & @CRLF & _ ' <dependency>' & @CRLF & _ ' <dependentAssembly>' & @CRLF & _ ' <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" language="*" processorArchitecture="*" publicKeyToken="6595b64144ccf1df"></assemblyIdentity>' & @CRLF & _ ' </dependentAssembly>' & @CRLF & _ ' </dependency>' & @CRLF & _ '</assembly>' $RT_MANIFEST = 24 $vDataStruct = StringToDataStruct($ManiText) $vlpData = DllStructGetPtr($vDataStruct) $vcbData = DllStructGetSize($vDataStruct) UpdateResource($NewFile,$RT_MANIFEST,1,$vlpData,$vcbData) EndIf Sleep(300) $Return = DllCall($NewFile,"DWORD","Func","DWORD",5,"DWORD",5) MsgBox(0,"Func Call",$Return[0]) ShellExecute($BCC102) Func StringToDataStruct($Text) $Len = StringLen($Text) if $Len = 0 Then $Len = 1 $DataStruct = DllStructCreate("char[" & $Len & "]") DllStructSetData($DataStruct,1,$Text) Return $DataStruct EndFunc Func UpdateResource($Dll_Exe_File,$lpType,$lpName,$lpData,$cbData) $Handle = DllCall("kernel32.dll","HANDLE","BeginUpdateResourceW","wstr",$Dll_Exe_File,"BOOL",False) if @error Or $Handle[0] = 0 Then Return SetError(1,0,False) $Handle = $Handle[0] Select Case IsString($lpType) $DTypeA = "wstr" $lpType = StringUpper($lpType) Case Else $DTypeA = "long" $lpType = Int($lpType) EndSelect Select Case IsString($lpName) $DTypeB = "wstr" $lpName = StringUpper($lpName) Case Else $DTypeB = "long" $lpName = Int($lpName) EndSelect $BOOL = DllCall("kernel32.dll","BOOL","UpdateResourceW","HANDLE",$Handle,$DTypeA _ ,$lpType,$DTypeB,$lpName,"WORD",0,"ptr",$lpData,"DWORD",$cbData) if @error Or $BOOL[0] = 0 Then Return SetError(2,0,False) $BOOL = DllCall("kernel32.dll","BOOL","EndUpdateResourceW","HANDLE",$Handle,"BOOL",False) if @error Or $BOOL[0] = 0 Then Return SetError(3,0,False) Return SetError(0,0,True) EndFunc Exe_Wthe_wpopen_Error.au3 $MsvcrtDll = DllOpen("Msvcrt.Dll") ;The _wpopen function cannot show errors that the C++ Compiler application returns /// (BCC32C.exe) ///" ;https://www.embarcadero.com/free-tools/ccompiler ;Free C++ Compiler ;The BCC32C/BCC32X Compiler is the high performance foundation and core technology of Embarcadero's ;award-winning C++Builder product line. ;This free download of the C++ Compiler for C++Builder includes C11 language support, the Dinkumware STL ;(Standard Template Library) framework, and the complete Embarcadero C/C++ Runtime Library (RTL). In this ;free version, you’ll also find a number of C/C++ command line tools—such as the high-performance linker ;and resource compiler. ;The Free C++ Compiler download includes: ;Embarcadero C++ Compiler (bcc32c/bcc32x) ;Turbo Incremental Linker (tlink32) ;C++ Win32 Preprocessor (cpp32) ;Import Library utility—for creating import libraries from DLLs (implib) ;Librarian for symbol case-conversion, creating extended libraries and modifying page size (tlib) ;Other useful command-line utilities such as make, grep, and touch ;Includes the Embarcadero C/C++ Runtime Library, and the DinkumwareANSI/ISO Standard Template Library (STL) ;bcc32c-101-Berlin-screenshot ;C++Builder includes compilers for Win64, macOS, iOS, and Android. And, C++Builder also features a modern, ;high-productivity RAD Studio IDE, debugger tools, and enterprise connectivity for to accelerate cross-platform ;UI development. Learn more about RAD Studio on its product page. ;C++ is avilable in three editions - Free, Community or Pro/Enterprise/Architect. Global $VisualStyles = True , $BCC102 = "D:\BCC102", $compExe = "bcc32c.exe" ; $compExe compiled Exe File Name Global $PFile = $BCC102 & "\yProject_Error.cpp" ; C++ File Global $NewFile = "NewFile" ; New Out File Global $Exe_Dll = 1 ; /// 1 Exe File /// 2 Dll File // Else Numbers Choose One Switch $Exe_Dll Case 1 $FType = ".exe " $TCod = " -tW " ; Exe File Command Case 2 $FType = ".dll " $TCod = " -tWD " ; Dll File Command Case Else $Gui = GUICreate("compiled", 210 + 150, 80) GUICtrlCreateLabel("Please Choose One!", 10, 10) $Exe = GUICtrlCreateButton("Exe File", 10, 50, 100, 23) $DLL = GUICtrlCreateButton("Dll File", 80 + 50, 50, 100, 23) $Ext = GUICtrlCreateButton("Exit", 150 + 100, 50, 100, 23) GUISetState() While 1 $iMsg = GUIGetMsg() Select Case $iMsg = $Exe $FType = ".exe " $TCod = " -tW " ; Exe File Command ExitLoop Case $iMsg = $DLL $FType = ".dll " $TCod = " -tWD " ; Dll File Command ExitLoop Case $iMsg = -3 Or $iMsg = $Ext ; $GUI_EVENT_CLOSE = -3 Exit EndSelect WEnd GUIDelete($Gui) EndSwitch ;The _wpopen function cannot show errors that the C++ Compiler application returns /// (BCC32C.exe) ///" $Dir = @ScriptDir $yCompiled_File = $BCC102 & "\Bin\" & $compExe if Not FileExists($yCompiled_File) Then $BCC102 = FileSelectFolder("Choose BCC102","C:\") if @error Then Exit if Not FileExists($PFile) Then $PFile = FileOpenDialog("Choose C++ File",$Dir,"(*.cpp)",5) if @error Then Exit $NewFile &= $FType FileChangeDir($BCC102) $Command = "Bin\" & $compExe & $TCod & "-IInclude -LLib -e" & $NewFile & $PFile Local $Buffer = DllStructCreate("wchar[1024]") , $Text = "" $Return = DllCall($MsvcrtDll,"ptr:cdecl","_wpopen","wstr",$Command,"wstr","rt") if @error Or $Return[0] = 0 Then Exit $pPipe = $Return[0] $Text = "Important note" & @CRLF & "The _wpopen function cannot show errors that the C++ Compiler " & @CRLF & _ "application returns /// (BCC32C.exe) ///" & @CRLF & @CRLF while 1 $Return = DllCall($MsvcrtDll,"ptr:cdecl","fgetws","STRUCT*",$Buffer,"int",1024,"ptr",$pPipe) $Text &= DllStructGetData($Buffer,1) if Not $Return[0] Then ExitLoop WEnd MsgBox(0,"",$Text) Exe_Wthe_Bat_Error.au3 ;All errors and notices appear on the Ms-dos data ;https://www.embarcadero.com/free-tools/ccompiler ;Free C++ Compiler ;The BCC32C/BCC32X Compiler is the high performance foundation and core technology of Embarcadero's ;award-winning C++Builder product line. ;This free download of the C++ Compiler for C++Builder includes C11 language support, the Dinkumware STL ;(Standard Template Library) framework, and the complete Embarcadero C/C++ Runtime Library (RTL). In this ;free version, you’ll also find a number of C/C++ command line tools—such as the high-performance linker ;and resource compiler. ;The Free C++ Compiler download includes: ;Embarcadero C++ Compiler (bcc32c/bcc32x) ;Turbo Incremental Linker (tlink32) ;C++ Win32 Preprocessor (cpp32) ;Import Library utility—for creating import libraries from DLLs (implib) ;Librarian for symbol case-conversion, creating extended libraries and modifying page size (tlib) ;Other useful command-line utilities such as make, grep, and touch ;Includes the Embarcadero C/C++ Runtime Library, and the DinkumwareANSI/ISO Standard Template Library (STL) ;bcc32c-101-Berlin-screenshot ;C++Builder includes compilers for Win64, macOS, iOS, and Android. And, C++Builder also features a modern, ;high-productivity RAD Studio IDE, debugger tools, and enterprise connectivity for to accelerate cross-platform ;UI development. Learn more about RAD Studio on its product page. ;C++ is avilable in three editions - Free, Community or Pro/Enterprise/Architect. Global $VisualStyles = True , $BCC102 = "D:\BCC102", $compExe = "bcc32c.exe" ; $compExe compiled Exe File Name Global $PFile = $BCC102 & "\yProject_Error.cpp" ; C++ File Global $NewFile = "NewFile" ; New Out File Global $Exe_Dll = 1 ; /// 1 Exe File /// 2 Dll File // Else Numbers Choose One Switch $Exe_Dll Case 1 $FType = ".exe " $TCod = " -tW " ; Exe File Command Case 2 $FType = ".dll " $TCod = " -tWD " ; Dll File Command Case Else $Gui = GUICreate("compiled", 210 + 150, 80) GUICtrlCreateLabel("Please Choose One!", 10, 10) $Exe = GUICtrlCreateButton("Exe File", 10, 50, 100, 23) $DLL = GUICtrlCreateButton("Dll File", 80 + 50, 50, 100, 23) $Ext = GUICtrlCreateButton("Exit", 150 + 100, 50, 100, 23) GUISetState() While 1 $iMsg = GUIGetMsg() Select Case $iMsg = $Exe $FType = ".exe " $TCod = " -tW " ; Exe File Command ExitLoop Case $iMsg = $DLL $FType = ".dll " $TCod = " -tWD " ; Dll File Command ExitLoop Case $iMsg = -3 Or $iMsg = $Ext ; $GUI_EVENT_CLOSE = -3 Exit EndSelect WEnd GUIDelete($Gui) EndSwitch ;All errors and notices appear on the Ms-dos data $Dir = @ScriptDir $yCompiled_File = $BCC102 & "\Bin\" & $compExe if Not FileExists($yCompiled_File) Then $BCC102 = FileSelectFolder("Choose BCC102","C:\") if @error Then Exit if Not FileExists($PFile) Then $PFile = FileOpenDialog("Choose C++ File",$Dir,"(*.cpp)",5) if @error Then Exit $NewFile &= $FType FileChangeDir($BCC102) $PFile = FileGetShortName($PFile) $Command = "Bin\" & $compExe & $TCod & "-IInclude -LLib -e" & $NewFile & $PFile & @CRLF & "Pause" if FileExists("Batch.bat") And Not FileDelete("Batch.bat") Then Exit FileWrite("Batch.bat",$Command) RunWait("Batch.bat") ;All errors and notices appear on the Ms-dos data
    1 point
  11. ReFran

    PDF merge

    You may have a look at the free command-line tools PDFTK or mbtPdfAsm http://www.accesspdf.com/pdftk/ http://thierry.schmit.free.fr/spip/spip.ph...e15&lang=en I prefer mbtPdfAsm, because it also can write bookmarks (PDFTK can only read). If you don't want to write your own GUI you may also have a look on BeCyPdfAsm: http://www.becyhome.de/download_eng.htm#becypdfasm HTH, Reinhard
    1 point
  12. Okay it's about the style of the AutoIT Language. Concerning: BitAND, BitOR, BitXOR, BitXOR, BitShift, BitRotate That's a very simple but fundamental question: Why BitAND is not infix? In most other common programming languages it is. Let's take JavaScript. Here I write: Result = Value & Mask But on AutoIT it's $Result = BitAND ( $Value , $Mask ) That's more the Lisp / prefix way. While the logical and is indeed infix $bIsEnable = $bIsGUI_chkEnabled and $bIsGUI_chkChecked So I wonder why it is like this. What is the Idea behind this language design decision? Okay Autoit is a matured Language but yeah - It's never to late for a change. Wasn't there ideas to unify it any way? So we also make the 'Bit' operations infix as well? ... while Just keeping the 'old' prefix version -for backwards compatibility - as well. UPDATE #1: Now I created a ticket for this: https://autoitscript.com/trac/autoit/ticket/3752 Well to generalise/modulate It more I may bring it down to the Subject Verb Object thing you have with language. "I go swimming" that's S-V-O or some infix. "Swimming I go". is O-S-V - postfix and sound much like yoda-style. While "go I swimming" is V-S-O - prefix and 'feels' more like kinda question. There is no right or wrong here - however personally I find infix is most appropriate here.
    0 points
×
×
  • Create New...