Jump to content

Recommended Posts

I seem to have an issue with clipget() - the following bit of code copy URL from chrome address bar - than using clipget() i try to grab the URL into a variable and input it into a spreadsheet. the script did not put anything into the sheet 

originally I though it was an issue with  OOo/LibO Calc UDF and posted it there :

 

than I tried writing $NewURL into a text file and than just a msgbox but it comes blank. (the URL is in the clipboard as i can paste it)

 

send ("!d") ;select URL in browser
send ("^c") ;copy selected URL
Local $NewURL = ClipGet()
MsgBox($MB_ICONINFORMATION + $MB_TOPMOST, $sTitle, $NewURL )

am I doing something wrong? is there an issue with a URL characters?

Share this post


Link to post
Share on other sites

Hmm I don't see anything wrong in that code.

This works fine here - The MsgBox gives me the URL.
Have you tried with different sites?

#include <MsgBoxConstants.au3>

send ("!d") ;select URL in browser
send ("^c") ;copy selected URL

Local $NewURL = ClipGet()
Local $sTitle = "Title"

MsgBox($MB_ICONINFORMATION + $MB_TOPMOST, $sTitle, $NewURL )

 

Share this post


Link to post
Share on other sites
3 hours ago, david1337 said:

Hmm I don't see anything wrong in that code.

This works fine here - The MsgBox gives me the URL.
Have you tried with different sites?

#include <MsgBoxConstants.au3>

send ("!d") ;select URL in browser
send ("^c") ;copy selected URL

Local $NewURL = ClipGet()
Local $sTitle = "Title"

MsgBox($MB_ICONINFORMATION + $MB_TOPMOST, $sTitle, $NewURL )

 

that is strange... doesnt work for me even with other URLs... Now I kind of went the manual route opening a text file, activating it, pasting from the clipboard - that works but wish i understood why clipget doesnt work

Share this post


Link to post
Share on other sites

its working,

#include <MsgBoxConstants.au3>
WinActivate("[Class:MozillaWindowClass]")

send ("!d") ;select URL in browser

send ("^c") ;copy selected URL
Local $NewURL = ClipGet()
MsgBox($MB_ICONINFORMATION + $MB_TOPMOST, "Title", $NewURL )

just activate your browser and put some if statement


ill get to that... i still need to learn and understand a lot of codes graduated.gif

Correct answer, learn to walk before you take on that marathon.

Share this post


Link to post
Share on other sites

the issue is in clipget - the URL is copied into the clipboard no problem but $NewURL is not populated by clipget() - have no idea why... tried running it as admin on win10 as well but did not work

5 hours ago, 232showtime said:

its working,

#include <MsgBoxConstants.au3>
WinActivate("[Class:MozillaWindowClass]")

send ("!d") ;select URL in browser

send ("^c") ;copy selected URL
Local $NewURL = ClipGet()
MsgBox($MB_ICONINFORMATION + $MB_TOPMOST, "Title", $NewURL )

just activate your browser and put some if statement

 

Share this post


Link to post
Share on other sites

It's working as well in me.

#include <FileConstants.au3>
#include <MsgBoxConstants.au3>
#include <WinAPIFiles.au3>

WinActivate("[Class:MozillaWindowClass]")

send ("!d") ;select URL in browser

send ("^c") ;copy selected URL
Local $NewURL = ClipGet()
$sFilePath = @ScriptDir & "\Test.txt"
$hFileOpen = FileOpen($sFilePath, $FO_APPEND)
   FileWriteLine($hFileOpen, $NewURL)
FileClose($hFileOpen)
MsgBox($MB_SYSTEMMODAL, "Title", "Contents of the ClipGet:" & @CRLF & FileRead($sFilePath))

 

17 minutes ago, mmoalem said:

$NewURL is not populated by clipget()

What do you mean by not populating your clipget()?


Programming is "To make it so simple that there are obviously no deficiencies" or "To make it so complicated that there are no obvious deficiencies" by C.A.R. Hoare.

Share this post


Link to post
Share on other sites
22 hours ago, mmoalem said:

the following bit of code copy URL from chrome address bar - than using clipget() i try to grab the URL into a variable and input it into a spreadsheet. the script did not put anything into the sheet

Have you tried using Mozilla instead? Chrome seems not working in me.

I tried having it this way:

#include <FileConstants.au3>
#include <MsgBoxConstants.au3>
#include <WinAPIFiles.au3>

If WinExists("[CLASS:MozillaWindowClass]") Then
    WinActivate("[CLASS:MozillaWindowClass]")
ElseIf WinExists("[CLASS:IEFrame]") Then
    WinActivate("[CLASS:IEFrame]")
 ElseIf WinExists("[CLASS:Chrome_WidgetWin_0]") Then
    WinActivate("[CLASS:Chrome_WidgetWin_0]")
EndIf

send ("!d") ;select URL in browser

send ("^c") ;copy selected URL
Local $NewURL = ClipGet()
$sFilePath = @ScriptDir & "\Test.txt"
$hFileOpen = FileOpen($sFilePath, $FO_APPEND)
   FileWriteLine($hFileOpen, $NewURL)
FileClose($hFileOpen)
MsgBox($MB_SYSTEMMODAL, "Title", "Contents of the ClipGet:" & @CRLF & FileRead($sFilePath))

But you might want to check this here and try Xandy's line. Might help you with your chrome issue. But for FireFox and IE above code is working fine.^_^

Edited by KickStarter15

Programming is "To make it so simple that there are obviously no deficiencies" or "To make it so complicated that there are no obvious deficiencies" by C.A.R. Hoare.

Share this post


Link to post
Share on other sites

Sometimes when using send("^c) to copy data to the clipboard it can take a short time for the data to get into the clipboard. Adding a short sleep before trying to access the data in the clipboard usually  solves the problem.

#include <MsgBoxConstants.au3>
WinActivate("[Class:MozillaWindowClass]")

send ("!d") ;select URL in browser

send ("^c") ;copy selected URL
sleep(500) ;<===== Experiment with different values to get the optimum sleep time
Local $NewURL = ClipGet()
MsgBox($MB_ICONINFORMATION + $MB_TOPMOST, "Title", $NewURL )

 

 

 


"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to build bigger and better idiots. So far, the universe is winning."- Rick Cook

Share this post


Link to post
Share on other sites

Also, just because you activate a window doesn't necessarily mean that 100% of your sends are going to get to that window.  Why not just use IE, and then there are actual functions that will grab a DOM object text (the url) into a variable


IEbyXPATH-Grab IE DOM objects by XPATH IEscriptRecord-Makings of an IE script recorder ExcelFromXML-Create Excel docs without excel installed GetAllWindowControls-Output all control data on a given window.

Share this post


Link to post
Share on other sites
On 2017-5-18 at 9:23 PM, Bowmore said:

Sometimes when using send("^c) to copy data to the clipboard it can take a short time for the data to get into the clipboard. Adding a short sleep before trying to access the data in the clipboard usually  solves the problem.

#include <MsgBoxConstants.au3>
WinActivate("[Class:MozillaWindowClass]")

send ("!d") ;select URL in browser

send ("^c") ;copy selected URL
sleep(500) ;<===== Experiment with different values to get the optimum sleep time
Local $NewURL = ClipGet()
MsgBox($MB_ICONINFORMATION + $MB_TOPMOST, "Title", $NewURL )

 

 

 

That was the issue! thank you all for trying to help - appreciate the support

Share this post


Link to post
Share on other sites

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

  • Similar Content

    • By rudi
      Hi,
      from other postings here as a start I'm quite Close to my Goal of putting formatted text to the clipboard:
      #include-once #include <GUIConstantsEx.au3> #include <GuiRichEdit.au3> #include <WindowsConstants.au3> Global $g_idLblMsg, $g_hRichEdit Example("The first text will be formatted ""as is""" & @CRLF & _ "(Default Font and font size)", "This text is formatted differently") MsgBox(0, "Rich Text copied", "Formatted Text put to clipboard") Func Example($TextDefault, $TextCourier) Local $hGui, $iMsg, $idBtnNext, $iStep = 0 $hGui = GUICreate("Example (" & StringTrimRight(@ScriptName, StringLen(".exe")) & ")", 320, 350, -1, -1) $g_hRichEdit = _GUICtrlRichEdit_Create($hGui, $TextDefault, 10, 10, 300, 220, BitOR($ES_MULTILINE, $WS_VSCROLL, $ES_AUTOVSCROLL)) $g_idLblMsg = GUICtrlCreateLabel("", 10, 235, 300, 60) GUISetState(@SW_SHOW) _GUICtrlRichEdit_SetSel($g_hRichEdit, -1, -1) ; set selection behind last CHAR in RTF_EDIT _GUICtrlRichEdit_SetFont($g_hRichEdit, 8, "Courier New") ; change font to 8pt, Courier New _GUICtrlRichEdit_AppendText($g_hRichEdit, @CRLF & $TextCourier) _GUICtrlRichEdit_SetSel($g_hRichEdit, 0, -1) ; select all the content of the RTF_EDIT _GUICtrlRichEdit_Copy($g_hRichEdit) ; put the selection to the clipboard EndFunc ;==>Example  
      Finally the clipboard content has to hold pre-formatted data to be pasted into an email body. for the 2nd part I'd like to add a frame around the text, like I did manually before taking this screenshot.



      Any suggestions, or maybe some absolutely different Approach?
       
      CU, Rudi.
    • By coffeeturtle
      Programs like Ditto are a great augmentation to the Windows clipboard where it keeps a list of items you copy and paste and you can go back to days, weeks, months later. It also comes in handy for multiple copied items you need to paste over and over again.
      https://sourceforge.net/projects/ditto-cp/
      Windows 10 also now has a clipboard history capability (though not as robust, I think, as Ditto).
      https://www.windowscentral.com/how-use-new-clipboard-windows-10-october-2018-update
      I would like to simulate this type of clipboard history into my own apps independent of Windows' clipboard, but I haven't a clue as to where to begin.
      Thank you in advance for any suggestions, examples, shelved codes. ☺
    • By Valiante
      I'm creating a tool which automatically saves screenshots.  I've found that some images appear corrupt after saving.  I've narrowed the source down to screenshots taken from within an RDP session via the Ctrl+Alt+Plus (PrtScn equivalent) and Ctrl+Alt+Minus (Alt+PrtScn equivalent) key combos.
      Here is the example code:
      #include <ClipBoard.au3> #include <GDIPlus.au3> If _ClipBoard_IsFormatAvailable($CF_BITMAP) Then ConsoleWrite("+Bitmap found on Clipboard" & @CRLF) If Not _ClipBoard_Open(0) Then MsgBox(16, "Error", "_ClipBoard_Open failed") Exit EndIf $hClipboardImage = _ClipBoard_GetDataEx($CF_BITMAP) _ClipBoard_Close() _GDIPlus_Startup() $hBitmap = _GDIPlus_BitmapCreateFromHBITMAP($hClipboardImage) $sCLSID = _GDIPlus_EncodersGetCLSID("JPG") _GDIPlus_ImageSaveToFileEx($hBitmap, @ScriptDir & "\" & TimerInit() & "_Clipboard_Image.jpg", $sCLSID, 0) _GDIPlus_BitmapDispose($hBitmap) _GDIPlus_Shutdown() Else MsgBox(48, @ScriptName, "No Bitmap found on Clipboard") EndIf If you copy a local window to the clipboard via Alt+PrtScn the above works fine.  If you copy a window in an RDP session via Ctrl+Alt+Minus it saves the image, but the left-hand edge appears to contain a few pixels sliced off the right-hand side of the bitmap (see two attached images for examples; one good, one bad).  If you paste directly into MSPaint, the image appears correctly, so the clipboard contents is good. It seems to be the process of converting the bitmap handle to an image file via GDIPlus which corrupts it (though I may be wrong about this).
      I've tried inspecting the contents of the clipboard via the _ClipBoard_EnumFormats example and I've noticed the clipboard from the RDP session contains a couple more formats;
      Local:
      Clipboard formats ..: 3 Clipboard format 1 .: Bitmap Clipboard format 2 .: DIB Clipboard format 3 .: DIB V5 RDP:
      Clipboard formats ..: 5 Clipboard format 1 .: DataObject Clipboard format 2 .: DIB Clipboard format 3 .: DIB V5 Clipboard format 4 .: Ole Private Data Clipboard format 5 .: Bitmap However the _ClipBoard_GetDataEx function is specifying the $CF_BITMAP constant for the format, which both instances contain, so I'm not sure the extra formats have any impact?
      I've tried using a combination of _ClipBoard_GetDataEx($CF_DIB) and _GDIPlus_BitmapCreateFromMemory in an effort to write the binary directly to a file, instead of using a bitmap handle, however this doesn't appear to work and just returns a zero and doesn't set @error to anything, which isn't covered in the help file (a failure should return a zero and set the @error level to something).
      I've hunted around the forums and tried everything I can think of. I can normally figure most things out without posting but I've been dipping in and out of this script for a few months now and have finally thrown in the towel and must ask you guys for help, which isn't a decision I take lightly.  Your help is, as always, greatly appreciated.


    • By AndyS19
      I want to copy just the selected text in an input control and put it to the clipboard, but GuiCtrlRead() always reads all of the text in the control.
      In this test code, when I highlight a  portion of the left control's text and press ^C, I want to copy just that text to the clipboard; but when I highlight a  portion of the right control's text and press ^C, I want to copy all of its text to the clipboard.
      #include <Debug.au3> _DebugSetup(@ScriptName & "_debug.txt", False, 2, "") _DebugOut("=============== " & @MON & "/" & @MDAY & "/" & @YEAR & " " & @HOUR & ":" & @MIN & ":" & @SEC & " ====================") #include <GUIConstants.au3> #include <WinAPI.au3> #include <Array.au3> Opt("GUICloseOnESC", 1) ; ESC closes GUI? (0 = no, 1 = yes) Opt("GUIOnEventMode", 1) ; Set OnEvent mode Opt('MustDeclareVars', 1) OnAutoItExitRegister("Event_GUIClose") Opt("GUIEventOptions", 1) ;0=default, 1=just notification, 2=GuiCtrlRead tab index Opt("WinTitleMatchMode", -2) ;1=start, 2=subStr, 3=exact, 4=advanced, -1 to -4=Nocase Global $hWnd_MainWin, $iID_Left, $iID_Right _Main() Func _Main() $hWnd_MainWin = GUICreate("test7", 200, 300) $iID_Left = GUICtrlCreateInput("AAA BBB CCC (get Selected text)", 10, 30, 200, 25) GUICtrlSetOnEvent($iID_Left, "handle_left_btn") $iID_Right = GUICtrlCreateInput("DDD EEE FFF (get All text)", 10, 60, 200, 25) GUICtrlSetOnEvent($iID_Right, "handle_right_btn") Local $aAccelKeys[1][2] = [["^c", $hWnd_MainWin]] GUISetAccelerators($aAccelKeys) GUISetOnEvent($GUI_EVENT_CLOSE, 'Event_GUIClose') GUISetState() ; Make everything visible While 1 Sleep(127) WEnd EndFunc ;==>_Main Func handle_CTRL_C_key() ConsoleWrite("+++: handle_CTRL_C_key() entered" & @CRLF) Local $hCtrl, $ctrlID, $control_classname, $text $control_classname = ControlGetFocus($hWnd_MainWin) $hCtrl = ControlGetHandle($hWnd_MainWin, "", $control_classname) $ctrlID = _WinAPI_GetDlgCtrlID($hCtrl) If ($ctrlID = $iID_Left) Then $text = GUICtrlRead($ctrlID) ClipPut($text) ConsoleWrite("+++: Copied selected text:" & @CRLF & "==>" & $text & "<==" & @CRLF) ElseIf ($ctrlID = $iID_Right) Then $text = GUICtrlRead($ctrlID) ClipPut($text) ConsoleWrite("+++: Copied all text:" & @CRLF & "==>" & $text & "<==" & @CRLF) EndIf EndFunc ;==>handle_CTRL_C_key Func Event_GUIClose() Exit (99) EndFunc ;==>Event_GUIClose Func handle_left_btn() ConsoleWrite("+++: handle_left_btn() entered" & @CRLF) EndFunc ;==>handle_left_btn Func handle_right_btn() ConsoleWrite("+++: handle_right_btn() entered" & @CRLF) EndFunc ;==>handle_right_btn
       
    • By fenhanxue
      i want to copy a picture file to clipboard, so that i can paste the picture through ctrl+V
      this is my code ,but it dosen't work :
      #AutoIt3Wrapper_UseX64 = n #Include <Clipboard.au3> #include <GDIPlus.au3> _GDIPlus_Startup() $hClipboard_Bitmap = _GDIPlus_BitmapCreateFromFile('C:\1.jpg') _ClipBoard_Open(0) _ClipBoard_SetDataEx($hClipboard_Bitmap,$CF_BITMAP) _ClipBoard_Close() _GDIPlus_Shutdown() can you help me
×
×
  • Create New...