What happened to the Messenger Plus! forums on msghelp.net?
Shoutbox » MsgHelp Archive » Messenger Plus! for Live Messenger » Scripting » [UPDATED] Clipboard Functions (that WORK)

[UPDATED] Clipboard Functions (that WORK)
Author: Message:
deAd
Scripting Contest Winner
*****

Avatar

Posts: 1060
Reputation: 28
– / Male / Flag
Joined: Jan 2006
O.P. Grin  [UPDATED] Clipboard Functions (that WORK)
UPDATED: If you have added the readClipboard() function to your script, update it now. Fixed major bug that caused the clipboard to stay locked on certain occasions.

Here's some great functions I made to get the clipboard text and change the clipboard text! They are based off the non-functional code in these requests: Get Text and Set Text. They are fully functional, but BE CAREFUL when you modify them. I haven't had any problems yet.

Be careful when you modify these.
@Segosa - your problem was (1) no unicode and (2) you did it a bit wrong :P

Clear Text:
No return value.
code:
function clearClipboard(){
    if (Interop.Call("User32", "OpenClipboard", 0)){
        Interop.Call("User32", "EmptyClipboard");
        Interop.Call("User32", "CloseClipboard");
    }
}

Get Text:
Do not remove the try/catch statement. Your clipboard may lock up.
This function will return false if there are errors (including the text being too long. I don't know how long it can go.) or if the clipboard is currently in use by another program. Otherwise it will return the text :)
code:
function readClipboard() {
var CF_TEXT = 1;
var CF_OEMTEXT = 7;
var CF_UNICODETEXT = 13;
var toBeReturned = false;

try {
if (Interop.Call("User32", "OpenClipboard", 0)) {
if (Interop.Call("User32", "IsClipboardFormatAvailable", CF_TEXT | CF_OEMTEXT)) {
var hClipboardData = Interop.Call("User32", "GetClipboardData", CF_UNICODETEXT);
var pchData = Interop.Call("Kernel32", "GlobalLock", hClipboardData);
var size = Interop.Call("Kernel32", "GlobalSize", hClipboardData);
var str = Interop.Allocate(size+2);
Interop.Call("Kernel32", "RtlMoveMemory", str, pchData, size);
toBeReturned = str.ReadString(0);
var unlocked = Interop.Call("Kernel32", "GlobalUnlock", hClipboardData);
} else {
Interop.Call("User32", "CloseClipboard");
return false;
}
Interop.Call("User32", "CloseClipboard");
}
} catch(ex) {
Interop.Call("User32", "CloseClipboard");
return false;
}
return toBeReturned;
}

Set Text:
This function has no return value. To use it, type writeClipboard(String);.

code:
function writeClipboard(str){
    var size = str.length*2+2;
    var GMEM_MOVEABLE = 0x2;
    var GMEM_SHARE = 0x2000;
    var GMEM_ZEROINIT = 0x40;
    var memtype = GMEM_MOVEABLE | GMEM_SHARE | GMEM_ZEROINIT;
    if (Interop.Call("User32", "OpenClipboard", 0)){
        var heap = Interop.Call("Kernel32", "GlobalAlloc", 0, size);
        var p = Interop.Call("Kernel32", "GlobalLock", heap);
        Interop.Call('Kernel32','RtlMoveMemory',p,str,size);
        Interop.Call("Kernel32", "GlobalUnlock", heap);
        if (Interop.Call("User32", "OpenClipboard", 0)){
            Interop.Call("User32", "EmptyClipboard");
            Interop.Call("User32", "SetClipboardData", 13, heap);
            Interop.Call("User32", "CloseClipboard");
        }
    }
}

This post was edited on 07-12-2006 at 01:16 PM by deAd.
07-11-2006 09:27 PM
Profile PM Find Quote Report
« Next Oldest Return to Top Next Newest »

Messages In This Thread
[UPDATED] Clipboard Functions (that WORK) - by deAd on 07-11-2006 at 09:27 PM
RE: Clipboard Functions (that WORK) - by andrey on 07-11-2006 at 09:44 PM
RE: Clipboard Functions (that WORK) - by deAd on 07-11-2006 at 09:46 PM
RE: Clipboard Functions (that WORK) - by ShawnZ on 07-11-2006 at 10:45 PM
RE: Clipboard Functions (that WORK) - by deAd on 07-11-2006 at 10:56 PM
RE: [UPDATED] Clipboard Functions (that WORK) - by alexp2_ad on 07-12-2006 at 12:32 AM
RE: [UPDATED] Clipboard Functions (that WORK) - by andrey on 07-12-2006 at 02:58 AM
RE: [UPDATED] Clipboard Functions (that WORK) - by -dt- on 07-12-2006 at 04:45 AM
RE: [UPDATED] Clipboard Functions (that WORK) - by Dempsey on 07-12-2006 at 07:28 AM


Threaded Mode | Linear Mode
View a Printable Version
Send this Thread to a Friend
Subscribe | Add to Favorites
Rate This Thread:

Forum Jump:

Forum Rules:
You cannot post new threads
You cannot post replies
You cannot post attachments
You can edit your posts
HTML is Off
myCode is On
Smilies are On
[img] Code is On