motionman95 Posted February 17, 2009 Posted February 17, 2009 (edited) Since I didn't get much help on my last thread (due to an ill explained problem, I guess) I will try to explain what I'm needing help with. Here goes...:I'm making an app that will convert font files. Here's how it works:1.) The user will drag in the file(s) that they want converted to a certain part (a group control) of my GUI window.2.) The file will be converted.3.) The user can then use the second part (a group control) of the GUI to "drag and drop" from their converted "file(s)" to the desktop, or the location they choose, and have the converted file copied there.I'm really need help with number 3. 1 & 2 I've been able to do, but number 3 is proving to be difficult, because I'm not that advanced enough to accomplish it. I'm trying to have it so they (the user) can drag and drop from my GUI window to the desktop (from my GUI Window), and the files appear on their desktop. I've only been able to drag and drop from the desktop to my GUI window. Any help with this guys? Threads, Ideas...etc? Thanks!EDIT: I've found a C# code sample that shows exactly what I want to do:http://www.codeproject.com/KB/cs/draginternetshortcut.aspx Edited February 17, 2009 by motionman95
martin Posted February 17, 2009 Posted February 17, 2009 Bump I'm sure there are a lot of people who would be happy to help you, as I would, but I don't know what you are dealing with. You haven't told us what there is in your gui that we are selecting and dragging. Is it an item in a list box, an icon in a list view, a line in an edit, a label, an icon or something else? If you tell us what you want to drag it would help, and what might be even better would be to show us what you have so far if you can. Serial port communications UDF Includes functions for binary transmission and reception.printing UDF Useful for graphs, forms, labels, reports etc.Add User Call Tips to SciTE for functions in UDFs not included with AutoIt and for your own scripts.Functions with parameters in OnEvent mode and for Hot Keys One function replaces GuiSetOnEvent, GuiCtrlSetOnEvent and HotKeySet.UDF IsConnected2 for notification of status of connected state of many urls or IPs, without slowing the script.
motionman95 Posted February 18, 2009 Author Posted February 18, 2009 They aren't dragging anything. They need to think that they are "dragging" something, so that when they do drop on the desktop, the converted file is copied there.
Debit Posted February 18, 2009 Posted February 18, 2009 I died a little inside on that one. Sorry man, no idea.
motionman95 Posted February 18, 2009 Author Posted February 18, 2009 Would this help?http://www.codeproject.com/KB/cs/draginternetshortcut.aspx
motionman95 Posted February 18, 2009 Author Posted February 18, 2009 The desktop is a process, isn't it? Shouldn't there be a way to detect when something is dropped on it?
Bert Posted February 18, 2009 Posted February 18, 2009 Since you won't show us your code, there isn't much we can do to help. Sorry. You need to post what you have so far. Then we can get a MUCH better understanding of what you are attempting. So far, we do not understand what you are trying to do. The Vollatran project My blog: http://www.vollysinterestingshit.com/
motionman95 Posted February 18, 2009 Author Posted February 18, 2009 Thanks for the reply, Volly. If I did post my code, I don't think it would help. The code I have now has nothing to do with this problem, I simply have no idea how to go at this problem. I think this link will help you guys to understand what I'm trying to accomplish better than me trying to explain it.http://www.codeproject.com/KB/cs/draginternetshortcut.aspx
bobchernow Posted February 18, 2009 Posted February 18, 2009 Thanks for the reply, Volly. If I did post my code, I don't think it would help. The code I have now has nothing to do with this problem, I simply have no idea how to go at this problem. I think this link will help you guys to understand what I'm trying to accomplish better than me trying to explain it.http://www.codeproject.com/KB/cs/draginternetshortcut.aspxIf you have code that you can drag a font file into, and you have conversion code that can create a converted font file, why not post that so others can work on adding the ability to drag the converted files to the desktop. That way we can play with something and not have to create the initial part from scratch.Bob --------------------bobchernow, Bob ChernowWhat a long strange trip it's beenUDFs: [post="635594"]Multiple Monitor Screen Resolution Change[/post]
motionman95 Posted February 21, 2009 Author Posted February 21, 2009 Here's the code my app - I haven't worked in the font converting method yet, but I already know how I'm going to do it. Also, this code only has drag and drop to theGUI, and not drag and drop from the GUI to the desktop.expandcollapse popup#include <GUIConstants.au3> #include <Misc.au3> _Singleton("RBC") $WS_EX_ACCEPTFILES = 16 #Region ### START Koda GUI section ### Form=C:\Program Files\Koda 1.7.01\Forms\QuickFTP\FNTConvert.kxf $Form1 = GUICreate("Rockbox FNT Converter", 441, 323, 293, 202, -1, $WS_EX_ACCEPTFILES) $Tab1 = GUICtrlCreateTab(6, 7, 428, 308) GUICtrlSetResizing(-1, $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT) $TabSheet1 = GUICtrlCreateTabItem("Convert") $Label1 = GUICtrlCreateLabel("Drop the font(s) onto the left (1st) pane,", 71, 50, 189, 17) GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) $Label2 = GUICtrlCreateLabel("then drag the converted font(s) from the right (2nd) pane.", 71, 70, 271, 17) GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) $Pic1 = GUICtrlCreatePic("C:\Documents and Settings\Owner\My Documents\Autoit Applications\DropBox.jpg", 71, 101, 130, 130) GUICtrlSetState(-1, $GUI_DROPACCEPTED) $Label3 = GUICtrlCreateLabel("Status: Waiting...", 71, 248, 85, 17) GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) $Progress1 = GUICtrlCreateProgress(71, 271, 297, 17) $Pic2 = GUICtrlCreatePic("C:\Documents and Settings\Owner\My Documents\Autoit Applications\DropBox.jpg", 234, 101, 130, 130) GUICtrlSetState(-1, $GUI_DROPACCEPTED) $Label5 = GUICtrlCreateLabel("1.)", 127, 160, 19, 17) GUICtrlSetState(-1, $GUI_DROPACCEPTED) GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif") GUICtrlSetColor(-1, 0x808080) GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) $Label6 = GUICtrlCreateLabel("2.)", 291, 160, 19, 17) GUICtrlSetState(-1, $GUI_DROPACCEPTED) GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif") GUICtrlSetColor(-1, 0x808080) GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) $TabSheet2 = GUICtrlCreateTabItem("About") $Label4 = GUICtrlCreateLabel("Developed by motionman95, 2009, All Rights Reserved.", 15, 286, 274, 17) GUICtrlCreateTabItem("") GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $GUI_EVENT_DROPPED $File = @GUI_DragFile If StringRegExp($file, "^.+\.(?i)((TTF)|(OTF))$") Then MsgBox(0, "", $file & @CRLF & "Is a font file.") Else MsgBox(0, "", $file & @CRLF & "Is an invalid file type.") EndIf EndSwitch WEndI don't know how this will help anyone help me with my problem, but I've posted it anyway...
jvanegmond Posted February 21, 2009 Posted February 21, 2009 Sorry, motionman. The clipboard support in AutoIt is limited compared to some others, same with drag and drop operations. Noone, has done this before so all we can do is link you to source code in another language. github.com/jvanegmond
martin Posted February 21, 2009 Posted February 21, 2009 Here's the code my app - I haven't worked in the font converting method yet, but I already know how I'm going to do it. Also, this code only has drag and drop to theGUI, and not drag and drop from the GUI to the desktop. expandcollapse popup#include <GUIConstants.au3> #include <Misc.au3> _Singleton("RBC") $WS_EX_ACCEPTFILES = 16 #Region ### START Koda GUI section ### Form=C:\Program Files\Koda 1.7.01\Forms\QuickFTP\FNTConvert.kxf $Form1 = GUICreate("Rockbox FNT Converter", 441, 323, 293, 202, -1, $WS_EX_ACCEPTFILES) $Tab1 = GUICtrlCreateTab(6, 7, 428, 308) GUICtrlSetResizing(-1, $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT) $TabSheet1 = GUICtrlCreateTabItem("Convert") $Label1 = GUICtrlCreateLabel("Drop the font(s) onto the left (1st) pane,", 71, 50, 189, 17) GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) $Label2 = GUICtrlCreateLabel("then drag the converted font(s) from the right (2nd) pane.", 71, 70, 271, 17) GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) $Pic1 = GUICtrlCreatePic("C:\Documents and Settings\Owner\My Documents\Autoit Applications\DropBox.jpg", 71, 101, 130, 130) GUICtrlSetState(-1, $GUI_DROPACCEPTED) $Label3 = GUICtrlCreateLabel("Status: Waiting...", 71, 248, 85, 17) GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) $Progress1 = GUICtrlCreateProgress(71, 271, 297, 17) $Pic2 = GUICtrlCreatePic("C:\Documents and Settings\Owner\My Documents\Autoit Applications\DropBox.jpg", 234, 101, 130, 130) GUICtrlSetState(-1, $GUI_DROPACCEPTED) $Label5 = GUICtrlCreateLabel("1.)", 127, 160, 19, 17) GUICtrlSetState(-1, $GUI_DROPACCEPTED) GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif") GUICtrlSetColor(-1, 0x808080) GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) $Label6 = GUICtrlCreateLabel("2.)", 291, 160, 19, 17) GUICtrlSetState(-1, $GUI_DROPACCEPTED) GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif") GUICtrlSetColor(-1, 0x808080) GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) $TabSheet2 = GUICtrlCreateTabItem("About") $Label4 = GUICtrlCreateLabel("Developed by motionman95, 2009, All Rights Reserved.", 15, 286, 274, 17) GUICtrlCreateTabItem("") GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $GUI_EVENT_DROPPED $File = @GUI_DragFile If StringRegExp($file, "^.+\.(?i)((TTF)|(OTF)){:content:}quot;) Then MsgBox(0, "", $file & @CRLF & "Is a font file.") Else MsgBox(0, "", $file & @CRLF & "Is an invalid file type.") EndIf EndSwitch WEnd I don't know how this will help anyone help me with my problem, but I've posted it anyway...Without the jpg I don't know what your gui looks like. You could have a list box which you drop items into. Then the user can see the items he's dropped and which have to be converted. The converted files can be put in a second list box and then the user could drag items from there. It might be easier to simply select an item and have a button or menu to save the file to the desktop. You could save the converted files in a special folder then show that folder so the user could drag and drop the files from there to wherever he wanted then you have no drag and drop code to worry abouit. Serial port communications UDF Includes functions for binary transmission and reception.printing UDF Useful for graphs, forms, labels, reports etc.Add User Call Tips to SciTE for functions in UDFs not included with AutoIt and for your own scripts.Functions with parameters in OnEvent mode and for Hot Keys One function replaces GuiSetOnEvent, GuiCtrlSetOnEvent and HotKeySet.UDF IsConnected2 for notification of status of connected state of many urls or IPs, without slowing the script.
motionman95 Posted February 21, 2009 Author Posted February 21, 2009 (edited) Well, since it isn't going to work that way, would it be possible (as far as dragging into an explorer window) to just use the handle on the explorer window, and look into whatever text input it is that holds the current directory? You could have a list box which you drop items into. Then the user can see the items he's dropped and which have to be converted. The converted files can be put in a second list box and then the user could drag items from there. Is there a way to do that? Without the jpg I don't know what your gui looks like. Here's the image: Edited February 21, 2009 by motionman95
motionman95 Posted February 21, 2009 Author Posted February 21, 2009 I have an idea - would it be possible to get the user's x and y of their drag and drop, and then simulate the exact same one? Also, would embedding a windows explorer into my a GUI allow me to drag and drop to the desktop?
martin Posted February 21, 2009 Posted February 21, 2009 I have an idea - would it be possible to get the user's x and y of their drag and drop, and then simulate the exact same one?DOn't understand that. Also, would embedding a windows explorer into my a GUI allow me to drag and drop to the desktop?Yes, but it might look a bit messy. $gg = GUICreate("drag from") GUISetState() $folder = "c:\temp" shellexecute("explorer.exe",$folder) sleep(1000) $hExpl = wingethandle("C:\temp") WinMove($hExpl,"",0,0,200,200) $OrigParent = DllCall("user32.dll", "int", "SetParent", "hwnd", WinGetHandle("C:\temp"), "hwnd",$gg) while 1 sleep(90) if GUIGetMsg() = -3 then Exitloop WEnd DllCall("user32.dll", "int", "SetParent", "hwnd", $hExpl, "hwnd",$OrigParent[0]) Serial port communications UDF Includes functions for binary transmission and reception.printing UDF Useful for graphs, forms, labels, reports etc.Add User Call Tips to SciTE for functions in UDFs not included with AutoIt and for your own scripts.Functions with parameters in OnEvent mode and for Hot Keys One function replaces GuiSetOnEvent, GuiCtrlSetOnEvent and HotKeySet.UDF IsConnected2 for notification of status of connected state of many urls or IPs, without slowing the script.
motionman95 Posted February 21, 2009 Author Posted February 21, 2009 (edited) Awesome! Is it possible to remove the tool bars and the right-click menu? Edit: By "I have an idea - would it be possible to get the user's x and y of their drag and drop, and then simulate the exact same one?" I meant that could I get the x and y of the first press of the drag and drop, then the x and y of the release? Edited February 21, 2009 by motionman95
martin Posted February 21, 2009 Posted February 21, 2009 Awesome! Is it possible to remove the tool bars and the right-click menu? Edit: By "I have an idea - would it be possible to get the user's x and y of their drag and drop, and then simulate the exact same one?" I meant that could I get the x and y of the first press of the drag and drop, then the x and y of the release? I don't understand that again. This is a way to do something like what you want. You can drag a file to the left hand listr box. SDelect it the press the "process" button and it will be copied to th eright hand list box. From there you can drag it to the desktop. expandcollapse popup#include <GUIConstants.au3> #include <Misc.au3> #include <guilistbox.au3> _Singleton("RBC") $WS_EX_ACCEPTFILES = 16 #Region ### START Koda GUI section ### Form=C:\Program Files\Koda 1.7.01\Forms\QuickFTP\FNTConvert.kxf $Form1 = GUICreate("Rockbox FNT Converter", 441, 323, 293, 202, -1, $WS_EX_ACCEPTFILES) $Tab1 = GUICtrlCreateTab(6, 7, 428, 308) GUICtrlSetResizing(-1, $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT) $TabSheet1 = GUICtrlCreateTabItem("Convert") $Label1 = GUICtrlCreateLabel("Drop the font(s) onto the left (1st) pane,", 71, 50, 189, 17) GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) $Label2 = GUICtrlCreateLabel("then drag the converted font(s) from the right (2nd) pane.", 71, 70, 271, 17) GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) $Pic1 = GUICtrlCreatePic("C:\Documents and Settings\Owner\My Documents\Autoit Applications\DropBox.jpg", 71, 101, 130, 130) GUICtrlSetState(-1, $GUI_DROPACCEPTED) $Label3 = GUICtrlCreateLabel("Status: Waiting...", 71, 248, 85, 17) GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) $Progress1 = GUICtrlCreateProgress(71, 271, 297, 17) $Pic2 = GUICtrlCreatePic("C:\Documents and Settings\Owner\My Documents\Autoit Applications\DropBox.jpg", 234, 101, 130, 130) GUICtrlSetState(-1, $GUI_DROPACCEPTED) $Label5 = GUICtrlCreateList("", 10, 100, 160, 160);Label("1.)", 127, 160, 19, 17) GUICtrlSetState(-1, $GUI_DROPACCEPTED) GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif") GUICtrlSetColor(-1, 0x808080) GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) $Label6 = GUICtrlCreateList("", 240, 100, 180, 160);Label("2.)", 291, 160, 19, 17) ;GUICtrlSetState(-1, $GUI_DROPACCEPTED) ;GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif") GUICtrlSetColor(-1, 0x808080) $process = GUICtrlCreateButton("process", 175, 150, 47, 20) ;GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) $TabSheet2 = GUICtrlCreateTabItem("About") $Label4 = GUICtrlCreateLabel("Developed by motionman95, 2009, All Rights Reserved.", 15, 286, 274, 17) GUICtrlCreateTabItem("") GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $GUI_EVENT_DROPPED $File = @GUI_DragFile If StringRegExp($File, "^.+\.(?i)((TTF)|(OTF))$") Then MsgBox(0, "", $File & @CRLF & "Is a font file.") GUICtrlSetData($Label5, $File, 1) Else MsgBox(0, "", $File & @CRLF & "Is an invalid file type.") EndIf Case $process ConsoleWrite("button process" & @CRLF) GUICtrlSetData($Label6, GUICtrlRead($Label5), 1) EndSwitch $dg = GUICtrlRead($Label6) If $dg <> '' Then $cp = GUIGetCursorInfo() If IsArray($cp) Then If $cp[2] Then ConsoleWrite("left down" & @CRLF) If $cp[4] = $Label6 Then ConsoleWrite("over rh lv" & @CRLF) While _IsPressed(01) Sleep(10) WEnd ConsoleWrite("left up" & @CRLF) $point = MouseGetPos() $ans = _WinInfoFromPoint($point[0],$point[1]) if StringInStr($ans,"Class: SysListView32;") and _ StringInStr($ans,"Owner: Progman;") Then filecopy($dg,@DesktopDir) EndIf EndIf EndIf EndIf EndIf WEnd Func _WinInfoFromPoint($nX, $nY);by Saio Local $tStrBuff, $pStrBuff, $aRet, $hWnd, $hOwnerWnd, $sClassName, $sOwnerClass, $sWinText $tStrBuff = DllStructCreate("char[100]") $pStrBuff = DllStructGetPtr($tStrBuff) $aRet = DllCall("user32.dll", "hwnd", "WindowFromPoint", "uint", $nX, "uint", $nY) $hWnd = $aRet[0] $aRet = DllCall("user32.dll", "int", "GetClassName", "hwnd", $hWnd, "ptr", $pStrBuff, "int", 100) $sClassName = DllStructGetData($tStrBuff, 1) DllStructSetData($tStrBuff, 1, "") DllCall("user32.dll", "int", "GetWindowText", "hwnd", $hWnd, "ptr", $pStrBuff, "int", 100) ;~ DllCall("user32.dll", "int", "SendMessage", "hwnd", $hWnd, "uint", $WM_GETTEXT, "uint", 100, "ptr", $pStrBuff) $sWinText = DllStructGetData($tStrBuff, 1) DllStructSetData($tStrBuff, 1, "") $aRet = DllCall("user32.dll", "hwnd", "GetAncestor", "hwnd", $hWnd, "uint", 2);$GA_ROOT = 2 $hOwnerWnd = $aRet[0] $aRet = DllCall("user32.dll", "int", "GetClassName", "hwnd", $hOwnerWnd, "ptr", $pStrBuff, "int", 100) $sOwnerClass = DllStructGetData($tStrBuff, 1) DllStructSetData($tStrBuff, 1, "") Return $sWinText & @CRLF & "[ Class: " & $sClassName & "; hWnd: " & $hWnd & " ]" & @CRLF & _ "( Owner: " & $sOwnerClass & "; " & $hOwnerWnd & " )" EndFunc Serial port communications UDF Includes functions for binary transmission and reception.printing UDF Useful for graphs, forms, labels, reports etc.Add User Call Tips to SciTE for functions in UDFs not included with AutoIt and for your own scripts.Functions with parameters in OnEvent mode and for Hot Keys One function replaces GuiSetOnEvent, GuiCtrlSetOnEvent and HotKeySet.UDF IsConnected2 for notification of status of connected state of many urls or IPs, without slowing the script.
motionman95 Posted February 21, 2009 Author Posted February 21, 2009 It work, but it's awfully slow. Can it be speed up?
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now