HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2010
1107
xalaクリップボードにコピー6解決


xala

リンク

2010/11/7(Sun) 19:29:12|NO.35707

いつもお世話になっております

題名にもありますがテキストファイルをクリップボードにコピーしたいのですが、
テキストファイルの抜粋した部分だけうまくいきません。
解決策等ありましたらよろしくお願いします<(_ _)>


#include "hspext.as" notesel buf noteload "test.txt" clipset buf

test.txtの内容(抜粋


♠♤♥♡♠♤♥♡♠♤♥♡♠♤♥♡♠♤♥♡

↑の部分がよく解らないことになってしまいます



この記事に返信する


KA

リンク

2010/11/7(Sun) 20:43:24|NO.35708

文字コードの関係?



SYAM

リンク

2010/11/7(Sun) 21:15:48|NO.35712

「うまくいきません。」の部分をもうちょい詳しく

- どうなってほしくて、
- なにをして、
- どうなったか

…を、具体的におしえてください。さもないと何がおきたのかもわかりません!当然アドバイスもできません!



damage

リンク

2010/11/8(Mon) 00:30:12|NO.35713

スクリプトに間違いはないよ!万事解決だね!



xala

リンク

2010/11/8(Mon) 22:08:16|NO.35722

すいません遅くなりました
皆さんご回答ありがとうございます

>SYAMさん
 テキストの内容をコピーしたときに抜粋した部分だけ文字化け(?)の様になります
 具体的には↓の用になりました
 `&d&e&a&`&d&e&a&`&d&e&a&`&d&e&a

>KAさん
 文字コードggってみたのですが…どう関係しているか良く解らなかった;;



inovia

リンク

2010/11/8(Mon) 22:28:02|NO.35723

hspext の clipset が Unicode に対応していないのが文字化ける原因ではないかと。

--------------------------

getcbuni uvar

クリップボードからテキスト(Unicode)データを取得します。
uvar は 変数名です。

--------------------------

setcbuni uvar

クリップボードにテキスト(Unicode)データを格納します。
uvar は 変数名です。

--------------------------
【以下オマケ】

strlenw(uvar)

Unicode版strlen
uvar は 変数名です。

--------------------------

mesW uvar

Unicode版mes
uvar は 変数名です。
実行後、redrawが必要です。

--------------------------


#include "user32.as" #include "kernel32.as" #module _UNICODECLIP_ // これだけ定義されていないので書いておく #uselib "kernel32.dll" #func CopyMemory "RtlMoveMemory" sptr, sptr, sptr #uselib "msvcrt" // Unicode版 strlen #cfunc global strlenW "wcslen" var // Unicode版 mes #define global printW mesW #deffunc mesW var u p = ginfo_cx, ginfo_cy, ginfo_winx, ginfo_winy DrawTextW hdc,varptr(u),-1,varptr(p),0 return // 共通 #deffunc _opencb repeat 100 OpenClipboard 0 res=stat if res!0 : break loop return res #deffunc getcbuni var cbBinBuf _opencb // 失敗 if stat=0 : return -1 // 数を取得 CountClipboardFormats if stat=0 : CloseClipboard : return -2 formatsNum = stat // 内容が CF_UNICODETEXT かどうか? res = 0 repeat formatsNum EnumClipboardFormats 0 if stat=0x0D : res = 1 : break if stat=0 : continue loop // CF_UNICODETEXT が見つからない if res=0 : CloseClipboard : return -3 // データ取得 GetClipboardData 0x0D if stat=0 : CloseClipboard : return -4 hGlobalMem = stat // グローバルメモリブロックのサイズ取得 GlobalSize hGlobalMem if stat=0 : CloseClipboard : return -5 globalMemLen = stat // 受け取りバッファー初期化 sdim cbBinBuf,globalMemLen bufPtr = varptr(cbBinBuf) // グローバルメモリブロックをロック GlobalLock hGlobalMem if stat=0 : CloseClipboard : return -6 globalMemPtr = stat // バッファーへコピー dupptr cbBinBuf,globalMemPtr,globalMemLen,2 res = stat GlobalUnlock hGlobalMem CloseClipboard if res=0 : return -7 // サイズを返す return globalMemLen #deffunc setcbuni var cbBinBuf // サイズチェック size = strlenw(cbBinBuf)*2+2 ; +2 しないとブチ切れる if size <= 0 : return -1 // グローバルメモリブロック確保 GlobalAlloc 66,size if stat=0 : return -2 hGlobalMem = stat // ポインター取得 binptr = varptr(cbBinBuf) // グローバルメモリブロックをロック GlobalLock hGlobalMem if stat=0 : GlobalFree hGlobalMem : return -3 globalMemPtr = stat // グローバルメモリブロックにコピー(結果が返ってこないのでちと不安) CopyMemory globalMemPtr,binptr,size // グローバルメモリブロックのロック解除 GlobalUnlock hGlobalMem // クリップボードオープン _opencb if stat=0 : GlobalFree hGlobalMem : return -4 // クリップボードの所有権をゲット EmptyClipboard if stat=0 : GlobalFree hGlobalMem : CloseClipboard : return -5 // クリップボードにコピー SetClipboardData 0x0D,hGlobalMem if stat=0 : GlobalFree hGlobalMem : CloseClipboard : return -6 // クリップボードをクローズ CloseClipboard return 0 #global



xala

リンク

2010/11/9(Tue) 06:24:18|NO.35728

> inoviaさん
 コピー出来ました!
 おまけなども付けていただきありがとうございます。
 今度はスクリプトの意味を一つずつ理解していきたいと思います



皆様ご回答ありがとうございました≦(._.)≧
というわけで解決



ONION software Copyright 1997-2023(c) All rights reserved.