Jump to content

Danyfirex

MVPs
  • Posts

    2,663
  • Joined

  • Last visited

  • Days Won

    40

Danyfirex last won the day on March 31 2022

Danyfirex had the most liked content!

About Danyfirex

  • Birthday 04/04/1915

Profile Information

  • Member Title
    DanysysTeam
  • WWW
    https://danysys.com/

Recent Profile Visitors

8,179 profile views

Danyfirex's Achievements

  1. @WarMan thank you I'll fix it. Saludos
  2. Both are working perfect to me already Saludos
  3. Hello. X64 works fine for me. But for x86 I just get this. It just exits after one or two seconds. Saludos
  4. It does work but before play with VLC it says this: Saludos
  5. works fine using Windows 10 21H2. Saludos
  6. Hello, I wrote this. You need to make it more dynamic, but it's a start. #include <File.au3> #include <WinAPIReg.au3> #include <WinAPI.au3> #include <GUIConstantsEx.au3> Global Const $CLSCTX_INPROC_SERVER = 1 Global Const $CLSCTX_LOCAL_SERVER = 4 Global Const $CLSCTX_SERVER = BitOR($CLSCTX_INPROC_SERVER, $CLSCTX_LOCAL_SERVER) Global Const $sIID_IPreviewHandler = "{8895b1c6-b41f-4c1c-a562-0d564250836f}" Global Const $sTagIPreviewHandler = "SetWindow hresult(hwnd;ptr); SetRect hresult(hwnd); DoPreview hresult(); Unload hresult(); SetFocus hresult(); QueryFocus hresult(hwnd*);TranslateAccelerator hresult(ptr*);" Global Const $sIID_IInitializeWithStream = "{B824B49D-22AC-4161-AC8A-9916E8FA3F7F}" Global Const $sIID_IInitializeWithFile = "{B7D14566-0509-4CCE-A71F-0A554233BD9B}" Global Const $sTagIInitializeWithFiler = "Initialize hresult(wstr;uint);" Global Const $sTagIInitializeWithStream = "Initialize hresult(ptr;uint);" _Test() Func _Test() _WinAPI_CoInitialize() Local $sFilePath = @ScriptDir & "\Tests.odt" ;chage me for another file If Not FileExists($sFilePath) Then Local $sFilePath = FileOpenDialog("Select a file to be loaded", @ScriptDir, "Any File Type (*.*)", $FD_FILEMUSTEXIST) If @error Then MsgBox($MB_SYSTEMMODAL, "", "No file(s) were selected.") FileChangeDir(@ScriptDir) Exit Else ; Change the working directory (@WorkingDir) back to the location of the script directory as FileOpenDialog sets it to the last accessed folder. FileChangeDir(@ScriptDir) $sFilePath = StringReplace($sFilePath, "|", @CRLF) EndIf EndIf Local $sExtension = _GetFilePathExtension($sFilePath) ConsoleWrite("$sExtension: " & $sExtension & @CRLF) Local $ExtensionCLSID = _GetShellExtensionCLSIDForFileType($sExtension) ConsoleWrite("$ExtensionClsid: " & $ExtensionCLSID & @CRLF) Local $tIIDExtensionCLSID = _WinAPI_GUIDFromString($ExtensionCLSID) Local $tIIDIPreviewHandler = _WinAPI_GUIDFromString($sIID_IPreviewHandler) Local $aRet = DllCall("ole32.dll", "long", "CoCreateInstance", "ptr", DllStructGetPtr($tIIDExtensionCLSID), "ptr", 0, "dword", $CLSCTX_SERVER, "ptr", DllStructGetPtr($tIIDIPreviewHandler), "ptr*", 0) Local $pIPreviewHandler = $aRet[5] ConsoleWrite("$pIPreviewHandler: " & $pIPreviewHandler & @CRLF) Local $oPreviewHandler = ObjCreateInterface($pIPreviewHandler, $sIID_IPreviewHandler, $sTagIPreviewHandler) ConsoleWrite("$oPreviewHandler: " & IsObj($oPreviewHandler) & @CRLF) Local $pIInitializeWithStream = 0 Local $pIInitializeWithFile = 0 $oPreviewHandler.QueryInterface($sIID_IInitializeWithStream, $pIInitializeWithStream) $oPreviewHandler.QueryInterface($sIID_IInitializeWithFile, $pIInitializeWithFile) ConsoleWrite("$pIInitializeWithStream: " & $pIInitializeWithStream & @CRLF) ConsoleWrite("$pIInitializeWithFile: " & $pIInitializeWithFile & @CRLF) If $pIInitializeWithStream Then Local $pIStream = 0 Local $aRet = DllCall("shlwapi.dll", "long", "SHCreateStreamOnFileEx", _ "wstr", $sFilePath, _ "dword", BitOR(0x00000000, 0x00000020), _ "dword", 0, _ "boolean", False, _ "ptr", 0, _ "ptr*", 0) $pIStream = $aRet[6] ConsoleWrite("$pIStream: " & $pIStream & @CRLF) Local $oIInitializeWithStream = ObjCreateInterface($pIInitializeWithStream, $sIID_IInitializeWithStream, $sTagIInitializeWithStream) $oIInitializeWithStream.Initialize($pIStream, 0) ElseIf $pIInitializeWithFile Then Local $oIInitializeWithFile = ObjCreateInterface($pIInitializeWithFile, $sIID_IInitializeWithFile, $sTagIInitializeWithFiler) ConsoleWrite("$oIInitializeWithFile: " & IsObj($oIInitializeWithFile) & @CRLF) ConsoleWrite("$oIInitializeWithFile.Initialize: " & $oIInitializeWithFile.Initialize($sFilePath, 0x00000000) & @CRLF) ;$STGM_READ = $STGM_READ Else ConsoleWrite("-Error Interface" & @CRLF) EndIf Local $hGUI = GUICreate("IPreviewHandler", 400, 400) Local $idPic = GUICtrlCreatePic("", 10, 10, 380, 380) Local $hWnd, $tRECT $hWnd = GUICtrlGetHandle($idPic) $tRECT = _WinAPI_GetClientRect($hWnd) ConsoleWrite("oPreviewHandler.etWindow: " & $oPreviewHandler.SetWindow($hWnd, DllStructGetPtr($tRECT)) & @CRLF) ConsoleWrite("oPreviewHandler.etWindow: " & $oPreviewHandler.DoPreview() & @CRLF) GUISetState(@SW_SHOW, $hGUI) While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE ExitLoop EndSwitch WEnd GUIDelete($hGUI) EndFunc ;==>_Test Func _GetFilePathExtension($sFilePath) Local $sDrive = "", $sDir = "", $sFileName = "", $sExtension = "" Local $aPathSplit = _PathSplit($sFilePath, $sDrive, $sDir, $sFileName, $sExtension) Return $sExtension EndFunc ;==>_GetFilePathExtension Func _GetShellExtensionCLSIDForFileType($sExtension) Local $sAssoc = _WinAPI_AssocQueryString($sExtension, $ASSOCSTR_SHELLEXTENSION, $ASSOCF_INIT_DEFAULTTOSTAR, $sIID_IPreviewHandler) Return $sAssoc EndFunc ;==>_GetShellExtensionCLSIDForFileType Saludos
  7. You can get the shape this way: $oDoc.Shapes("Group 5").GroupItems("Text Box 8") Saludos
  8. Hello, I use COMView drag and drop the .ocx and copy the GUID Saludos
  9. Here You have. {F4F25428-BB33-4FAC-8B8C-7BF97E0232E5} Saludos
  10. Are you sure is an AutoIt issue? I tested with PureBasic and still can't use that api. I tested with GetMonitorCount and it works fine. Can you provide a working example using FB? Saludos
  11. @ptrex here you have. OrdoWebView.7z Saludos
  12. Hello friends, I haven't used AutoIt for a long time, but I always like these challenges, and I never forget you. Apparently there is some bug in how GUICtrlCreateObj works and I don't have time to look internally at the bug. This way I was able to create the instance of the object. #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> Global Const $gATL = DllOpen("ATL.DLL") Global Const $gOleaut32 = DllOpen("oleaut32.dll") Global $oErrorHandler = ObjEvent("AutoIt.Error", "_ErrFunc") _TestOrdoWebView() Func _TestOrdoWebView() ConsoleWrite("AtlAxWinInit: " & AtlAxWinInit() & @CRLF) Local $pProgID = SysAllocString('OrdoWebView2.OrdoWebView') ConsoleWrite("SysAllocString('OrdoWebView2.OrdoWebView'): " & $pProgID & @CRLF) Local $hGUI = GUICreate("OrdoWebView2.OrdoWebView Test", (@DesktopWidth) / 1.2, (@DesktopHeight) / 1.2, Default, Default, BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPSIBLINGS, $WS_CLIPCHILDREN)) Local $hResult = AtlAxCreateControl($pProgID, $hGUI) _SysFreeString($pProgID) Local $pIUnkown = AtlAxGetControl($hGUI) ConsoleWrite("AtlAxGetControl: " & $pIUnkown & @CRLF) GUISetState() Local $oOrdoWebView2 = ObjCreateInterface($pIUnkown, "{E54909AA-1705-44A9-8235-B24F74366B3F}") Local $oOrdoWebViewEvents = ObjEvent($oOrdoWebView2, "_OrdoWebView_", "__OrdoWebView") ConsoleWrite("$oOrdoWebView2: " & IsObj($oOrdoWebView2) & @CRLF) ConsoleWrite($oOrdoWebView2.GetWebView2Version() & @CRLF) ConsoleWrite($oOrdoWebView2.GetMostRecentInstallPath() & @CRLF) $oOrdoWebView2.Anchor = True $oOrdoWebView2.Search_URL = "https://search.yahoo.com/search?p=%1" $oOrdoWebView2.HomeURL = "http://www.google.com" $oOrdoWebView2.SearchEngine = 2 $oOrdoWebView2.SearchAuto = True $oOrdoWebView2.Init() While Not $oOrdoWebView2.IsWebViewInit() ;wait initialization otherwise Navigate will fail Sleep(100) WEnd $oOrdoWebView2.Navigate("https://www.autoitscript.com/forum/topic/204362-microsoft-edge-webview2-embed-web-code-in-your-native-application/page/9/#findComment-1542505") While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE ExitLoop EndSwitch WEnd GUIDelete($hGUI) EndFunc ;==>_TestOrdoWebView Func _OrdoWebView_InitComplete($oIEpDisp) ConsoleWrite("_OrdoWebView_InitComplete" & @CRLF) EndFunc ;==>_OrdoWebView_InitComplete Func AtlAxCreateControl($pProgID, $HWND) Local $aCall = DllCall($gATL, "long", "AtlAxCreateControl", "ptr", $pProgID, "handle", $HWND, "ptr", 0, "ptr", 0) If @error Then Return SetError(1, 0, -1) Return $aCall[0] EndFunc ;==>AtlAxCreateControl Func AtlAxGetControl($HWND) Local $aCall = DllCall($gATL, "long", "AtlAxGetControl", "handle", $HWND, "ptr*", 0) If @error Then Return SetError(1, 0, -1) Return $aCall[2] EndFunc ;==>AtlAxGetControl Func AtlAxWinInit() Local $aCall = DllCall($gATL, "bool", "AtlAxWinInit") If @error Then Return SetError(1, 0, -1) Return $aCall[0] EndFunc ;==>AtlAxWinInit Func _SysFreeString($pBSTR) ; Author: Prog@ndy If Not $pBSTR Then Return SetError(2, 0, 0) DllCall($gOleaut32, "none", "SysFreeString", "ptr", $pBSTR) If @error Then Return SetError(1, 0, 0) EndFunc ;==>_SysFreeString Func SysAllocString($str) ; Author: monoceres Local $aCall = DllCall($gOleaut32, "ptr", "SysAllocString", "wstr", $str) If @error Then Return SetError(1, 0, 0) Return $aCall[0] EndFunc ;==>SysAllocString ; User's COM error function. Will be called if COM error occurs Func _ErrFunc($oError) ; Do anything here. ConsoleWrite(@ScriptName & " (" & $oError.scriptline & ") : ==> COM Error intercepted !" & @CRLF & _ @TAB & "err.number is: " & @TAB & @TAB & "0x" & Hex($oError.number) & @CRLF & _ @TAB & "err.windescription:" & @TAB & $oError.windescription & @CRLF & _ @TAB & "err.description is: " & @TAB & $oError.description & @CRLF & _ @TAB & "err.source is: " & @TAB & @TAB & $oError.source & @CRLF & _ @TAB & "err.helpfile is: " & @TAB & $oError.helpfile & @CRLF & _ @TAB & "err.helpcontext is: " & @TAB & $oError.helpcontext & @CRLF & _ @TAB & "err.lastdllerror is: " & @TAB & $oError.lastdllerror & @CRLF & _ @TAB & "err.scriptline is: " & @TAB & $oError.scriptline & @CRLF & _ @TAB & "err.retcode is: " & @TAB & "0x" & Hex($oError.retcode) & @CRLF & @CRLF) EndFunc ;==>_ErrFunc Saludos
  13. Hello, Another alternative. #include <WinAPIProc.au3> #include <WinAPI.au3> #include <GUIConstants.au3> Global $hGUI = GUICreate("GUI") Global $idbtnOK = GUICtrlCreateButton("OK", 310, 370, 85, 25) GUISetState(@SW_SHOW, $hGUI) GUIRegisterMsg(_WinAPI_RegisterWindowMessage('SHELLHOOK'), 'WM_SHELLHOOK') _WinAPI_RegisterShellHookWindow($hGUI) Local $nMsg = 0 While 1 $nMsg = GUIGetMsg() Select Case $nMsg = $GUI_EVENT_CLOSE ExitLoop Case $nMsg = $idbtnOK _MsgBox(0, "", "Hello I'm an AutoIt Msgbox at Default Position :-)") _MsgBox(0, "", "Hello I'm an AutoIt Msgbox at 10,10 Position :-)", 10, 10) _MsgBox(0, "", "Hello I'm an AutoIt Msgbox at " & @DesktopWidth - 300 & "," & @DesktopHeight - 300 & " Position :-)", @DesktopWidth - 300, @DesktopHeight - 300) _MsgBox(0, "", "Hello I'm an AutoIt Msgbox at 0,0 Position :-)", 0, 0) EndSelect WEnd _WinAPI_DeregisterShellHookWindow($hGUI) Exit Func _MsgBoxPostition($X = Default, $Y = Default) Local Static $aPos[] = [Default, Default] If $X = Default Or $Y = Default Then Return $aPos EndIf $aPos[0] = $X $aPos[1] = $Y EndFunc ;==>_MsgBoxPostition Func _MsgBox($iFlag, $Title, $Text, $X = Default, $Y = Default, $iTimeout = Default, $hWnd = Default) _MsgBoxPostition($X, $Y) MsgBox($iFlag, $Title, $Text, $iTimeout, $hWnd) EndFunc ;==>_MsgBox Func WM_SHELLHOOK($hWnd, $iMsg, $wParam, $lParam) #forceref $iMsg Switch $wParam Case $HSHELL_WINDOWCREATED If WinGetProcess($lParam) = @AutoItPID And _WinAPI_GetClassName($lParam) = "#32770" Then Local $aPos = _MsgBoxPostition() If $aPos[0] <> Default And $aPos[1] <> Default Then WinMove($lParam, "", $aPos[0], $aPos[1]) EndIf EndIf EndSwitch EndFunc ;==>WM_SHELLHOOK Saludos
  14. You would need to build some unique pattern. I've done things similar for for number before and worked perfectly. It is just a sample to handle it. but for sure it will work if you add a correct pattern for each number. Saludos
×
×
  • Create New...