Jump to content

Recommended Posts

Posted
  On 9/21/2018 at 8:28 AM, ademon said:

Is there any drag-and-drop OLE function in AutoIt?

Expand  

Could you please elaborate ?

  On 9/21/2018 at 8:28 AM, ademon said:

Could I drag a text file to an edit GUI and open the file automatically?

Expand  

 

Signature beginning:
Please remember: "AutoIt"..... *  Wondering who uses AutoIt and what it can be used for ? * Forum Rules *
ADO.au3 UDF * POP3.au3 UDF * XML.au3 UDF * IE on Windows 11 * How to ask ChatGPT for AutoIt Codefor other useful stuff click the following button:

  Reveal hidden contents

Signature last update: 2023-04-24

Posted

@ademon
Looking at the script of @mikell, and digging a little bit in the MSDN documentation, you could do something like this:

#include <Array.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <GuiRichEdit.au3>
#include <WinAPI.au3>
#include <WindowsConstants.au3>

Opt("GUIOnEventMode", 1)

Global Const $ES_NOOLEDRAGDROP = 0x08, _
             $tagEndropFiles = $tagNMHDR & "; HANDLE hDrop; LONG cp; BOOL fProtected"

#Region ### START Koda GUI section ### Form=
Global $frmMainForm = GUICreate("A Form", 405, 293, 302, 218)
                                                              ;
GUISetOnEvent($GUI_EVENT_CLOSE, "ExitApplication")
Global $hdlRichEdit = _GUICtrlRichEdit_Create($frmMainForm, "", 8, 8, 385, 273, BitOr($ES_NOOLEDRAGDROP, $ES_MULTILINE, $WS_HSCROLL, $WS_VSCROLL), $WS_EX_ACCEPTFILES)
                                                                                      ; ^ Needed to catch the
                                                                                      ; $EN_DROPFILES Notification Code
_GUICtrlRichEdit_SetEventMask($hdlRichEdit, $ENM_DROPFILES)
GUISetState(@SW_SHOW, $frmMainForm)
#EndRegion ### END Koda GUI section ###

GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")

While 1
    Sleep(100)
WEnd

Func ExitApplication()
    Exit
EndFunc

Func WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam)

    Local $hdlWindowFrom, _
          $intMessageCode, _
          $intControlID_From, _
          $tNMHDR, _
          $tEndropFiles, _
          $hdlDrop, _
          $arrFileList


    $tNMHDR = DllStructCreate($tagNMHDR, $lParam)
    If @error Then Return
    $intControlID_From = DllStructGetData($tNMHDR, "hWndFrom")
    $intMessageCode = DllStructGetData($tNMHDR, "Code")

    Switch $intControlID_From
        Case $hdlRichEdit
            Switch $intMessageCode
                Case $EN_DROPFILES

                    $tEndropFiles = DllStructCreate($tagEndropFiles, $lParam)
                    If @error Then Return

                    $hdlDrop = DllStructGetData($tEndropFiles, "hDrop")
                    $arrFileList = _WinAPI_DragQueryFileEx($hdlDrop, 1)
                    If @error Or $arrFileList[0] > 1 Or StringRight($arrFileList[1], 4) <> ".txt" Then
                        ConsoleWrite("The file(s) you dragged couldn't be read from the Rich Edit." & @CRLF)
                        ; Re-create the Rich Edit control
                        _GUICtrlRichEdit_Destroy($hdlRichEdit)
                        $hdlRichEdit = _GUICtrlRichEdit_Create($frmMainForm, "", 8, 8, 385, 273, BitOr($ES_NOOLEDRAGDROP, $ES_MULTILINE, $WS_HSCROLL, $WS_VSCROLL), $WS_EX_ACCEPTFILES)
                    Else
                        _GUICtrlRichEdit_SetText($hdlRichEdit, ReadFile($arrFileList[1]))
                        _WinAPI_DragFinish($hdlDrop)
                    EndIf


            EndSwitch
    EndSwitch

    Return $GUI_RUNDEFMSG

EndFunc


Func ReadFile($strFileName)

    Local $hdlFile, _
          $strFileContent = ""

    $hdlFile = FileOpen($strFileName)
    If $hdlFile = -1 Then
        ConsoleWrite("Error while opening the file '" & $strFileName & "'." & @CRLF)
        Return
    Else
        $strFileContent = FileRead($hdlFile)
    EndIf

    Return $strFileContent

EndFunc

Thanks @mikell first ;)
Cheers :)

Click here to see my signature:

  Reveal hidden contents

 

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
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...