dost0011 Posted December 29, 2007 Posted December 29, 2007 The small skript doesn't work... -------------- Skript start ----------------- #include "misc.au3" $fTest = _ClipPutFile ("C:\background01.jpg") If Not $fTest Then MsgBox(0,"_ClipPutFile() call Failed","@error = " & @error) Else MsgBox(0,"_ClipPutFile()",ClipGet()) EndIf --------------- Skript end ------------------ Result: A Window with "background01.jpg". I would have expected "C:\background01.jpg". If the Path is "background01.jpg" I get the Window with "ckgroun01.jpg". If I want to paste the clipboard now to anyplace with <Strg v> I get the message: "Datei kann nicht kopiert werden: Die Quelldatei oder vom Quelldatenträger kann nicht gelesen werden" On Englisch :-) Can't read the file... What is wrong ? Many thanks. I have installed Version 3.2.10 (overwrite from Version 3.1.?)
MrCreatoR Posted December 30, 2007 Posted December 30, 2007 (edited) I can confirm - there is a bug in AutoIt 3.2.10.0, to fix it there is need to replace this line (inside _ClipPutFile() funcntion ) :DllStructSetData($DROPFILES, 1, DllStructGetSize($DROPFILES) - StringLen($sFile))by this:DllStructSetData($DROPFILES, 1, DllStructGetSize($DROPFILES) - StringLen($sFile) - 2)As you can see, i added only the - 2 ... not stable, better wait to answer here . Edited December 30, 2007 by MsCreatoR Spoiler Using OS: Win 7 Professional, Using AutoIt Ver(s): 3.3.6.1 / 3.3.8.1 AutoIt Russian Community My Work... Spoiler Projects: ATT - Application Translate Tool {new}| BlockIt - Block files & folders {new}| SIP - Selected Image Preview {new}| SISCABMAN - SciTE Abbreviations Manager {new}| AutoIt Path Switcher | AutoIt Menu for Opera! | YouTube Download Center! | Desktop Icons Restorator | Math Tasks | KeyBoard & Mouse Cleaner | CaptureIt - Capture Images Utility | CheckFileSize ProgramUDFs: OnAutoItErrorRegister - Handle AutoIt critical errors {new}| AutoIt Syntax Highlight {new}| Opera Library! | Winamp Library | GetFolderToMenu | Custom_InputBox()! | _FileRun UDF | _CheckInput() UDF | _GUIInputSetOnlyNumbers() UDF | _FileGetValidName() UDF | _GUICtrlCreateRadioCBox UDF | _GuiCreateGrid() | _PathSplitByRegExp() | _GUICtrlListView_MoveItems - UDF | GUICtrlSetOnHover_UDF! | _ControlTab UDF! | _MouseSetOnEvent() UDF! | _ProcessListEx - UDF | GUICtrl_SetResizing - UDF! | Mod. for _IniString UDFs | _StringStripChars UDF | _ColorIsDarkShade UDF | _ColorConvertValue UDF | _GUICtrlTab_CoverBackground | CUI_App_UDF | _IncludeScripts UDF | _AutoIt3ExecuteCode | _DragList UDF | Mod. for _ListView_Progress | _ListView_SysLink | _GenerateRandomNumbers | _BlockInputEx | _IsPressedEx | OnAutoItExit Handler | _GUICtrlCreateTFLabel UDF | WinControlSetEvent UDF | Mod. for _DirGetSizeEx UDF Examples: ScreenSaver Demo - Matrix included | Gui Drag Without pause the script | _WinAttach()! | Turn Off/On Monitor | ComboBox Handler Example | Mod. for "Thinking Box" | Cool "About" Box | TasksBar Imitation Demo Like the Projects/UDFs/Examples? Please rate the topic (up-right corner of the post header: Rating ) * === My topics === * ================================================== ================================================== AutoIt is simple, subtle, elegant. © AutoIt Team
DW1 Posted December 30, 2007 Posted December 30, 2007 Minus 3 right? minus two gives me ":\filename.ext" minus three gives me "C:\filename.ext" AutoIt3 Online Help
MrCreatoR Posted December 30, 2007 Posted December 30, 2007 Minus 3 right?It's unstable, there must be another way, in some cases -3 will put wrong string to clipboard, but the same can happend with -2 ...P.SI made a bug report on this one. Spoiler Using OS: Win 7 Professional, Using AutoIt Ver(s): 3.3.6.1 / 3.3.8.1 AutoIt Russian Community My Work... Spoiler Projects: ATT - Application Translate Tool {new}| BlockIt - Block files & folders {new}| SIP - Selected Image Preview {new}| SISCABMAN - SciTE Abbreviations Manager {new}| AutoIt Path Switcher | AutoIt Menu for Opera! | YouTube Download Center! | Desktop Icons Restorator | Math Tasks | KeyBoard & Mouse Cleaner | CaptureIt - Capture Images Utility | CheckFileSize ProgramUDFs: OnAutoItErrorRegister - Handle AutoIt critical errors {new}| AutoIt Syntax Highlight {new}| Opera Library! | Winamp Library | GetFolderToMenu | Custom_InputBox()! | _FileRun UDF | _CheckInput() UDF | _GUIInputSetOnlyNumbers() UDF | _FileGetValidName() UDF | _GUICtrlCreateRadioCBox UDF | _GuiCreateGrid() | _PathSplitByRegExp() | _GUICtrlListView_MoveItems - UDF | GUICtrlSetOnHover_UDF! | _ControlTab UDF! | _MouseSetOnEvent() UDF! | _ProcessListEx - UDF | GUICtrl_SetResizing - UDF! | Mod. for _IniString UDFs | _StringStripChars UDF | _ColorIsDarkShade UDF | _ColorConvertValue UDF | _GUICtrlTab_CoverBackground | CUI_App_UDF | _IncludeScripts UDF | _AutoIt3ExecuteCode | _DragList UDF | Mod. for _ListView_Progress | _ListView_SysLink | _GenerateRandomNumbers | _BlockInputEx | _IsPressedEx | OnAutoItExit Handler | _GUICtrlCreateTFLabel UDF | WinControlSetEvent UDF | Mod. for _DirGetSizeEx UDF Examples: ScreenSaver Demo - Matrix included | Gui Drag Without pause the script | _WinAttach()! | Turn Off/On Monitor | ComboBox Handler Example | Mod. for "Thinking Box" | Cool "About" Box | TasksBar Imitation Demo Like the Projects/UDFs/Examples? Please rate the topic (up-right corner of the post header: Rating ) * === My topics === * ================================================== ================================================== AutoIt is simple, subtle, elegant. © AutoIt Team
dost0011 Posted December 30, 2007 Author Posted December 30, 2007 It's unstable, there must be another way, in some cases -3 will put wrong string to clipboard, but the same can happend with -2 ...P.SI made a bug report on this one.Many thanks !Do you know any other possibility to copy a File to the clipboard, to make ist available for other Windows Application ?
GaryFrost Posted December 30, 2007 Posted December 30, 2007 Replace the function in Misc.au3 with expandcollapse popupFunc _ClipPutFile($sFile, $sSeperator = "|") Local $vDllCallTmp, $nGlobMemSize, $hGlobal, $DROPFILES, $i, $hLock Local $GMEM_MOVEABLE = 0x0002, $CF_HDROP = 15 $sFile &= $sSeperator & $sSeperator $nGlobMemSize = (StringLen($sFile) + 20) $vDllCallTmp = DllCall("user32.dll", "int", "OpenClipboard", "hwnd", 0) If @error Or $vDllCallTmp[0] = 0 Then Return SetError(1, 1, False) $vDllCallTmp = DllCall("user32.dll", "int", "EmptyClipboard") If @error Or $vDllCallTmp[0] = 0 Then Return SetError(2, 2, False) $vDllCallTmp = DllCall("kernel32.dll", "hwnd", "GlobalAlloc", "int", $GMEM_MOVEABLE, "int", $nGlobMemSize) If @error Or $vDllCallTmp[0] < 1 Then Return SetError(3, 3, False) $hGlobal = $vDllCallTmp[0] $vDllCallTmp = DllCall("kernel32.dll", "hwnd", "GlobalLock", "long", $hGlobal) If @error Or $vDllCallTmp[0] < 1 Then Return SetError(4, 4, False) $hLock = $vDllCallTmp[0] $DROPFILES = DllStructCreate("dword;ptr;int;int;int;char[" & StringLen($sFile) + 1 & "]", $hLock) If @error Then Return SetError(5, 6, False) Local $tempStruct = DllStructCreate("dword;ptr;int;int;int") DllStructSetData($DROPFILES, 1, DllStructGetSize($tempStruct)) DllStructSetData($DROPFILES, 2, 0) DllStructSetData($DROPFILES, 3, 0) DllStructSetData($DROPFILES, 4, 0) DllStructSetData($DROPFILES, 5, 0) DllStructSetData($DROPFILES, 6, $sFile) For $i = 1 To StringLen($sFile) If DllStructGetData($DROPFILES, 6, $i) = $sSeperator Then DllStructSetData($DROPFILES, 6, Chr(0), $i) Next $vDllCallTmp = DllCall("user32.dll", "long", "SetClipboardData", "int", $CF_HDROP, "long", $hGlobal) If @error Or $vDllCallTmp[0] < 1 Then Return SetError(6, 6, False) $vDllCallTmp = DllCall("user32.dll", "int", "CloseClipboard") If @error Or $vDllCallTmp[0] = 0 Then Return SetError(7, 7, False) $vDllCallTmp = DllCall("kernel32.dll", "int", "GlobalUnlock", "long", $hGlobal) If @error Then Return SetError(8, 8, False) $vDllCallTmp = DllCall("kernel32.dll", "int", "GetLastError") If $vDllCallTmp = 0 Then Return SetError(8, 9, False) Return True EndFunc ;==>_ClipPutFile SciTE for AutoItDirections for Submitting Standard UDFs Don't argue with an idiot; people watching may not be able to tell the difference.
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