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


HSPTV!掲示板


未解決 解決 停止 削除要請

2021
0822
ユーヤンUnicodeでクリップボードへ文字をコピーしたい2解決


ユーヤン

リンク

2021/8/22(Sun) 13:52:57|NO.93655

hsp3utfを使用しているのですが、Unicodeに対応したclipset命令はありますか?



この記事に返信する


とあるプログラマ

リンク

2021/8/22(Sun) 14:54:38|NO.93657

見当たらなかったので命令を作ってみました。

当然ですが、hsp3utf.asをインクルードしている他、ソースコードがUTF-8で書かれている必要があります。


// --------------------------------------------------------------- // 【最小限必須環境】 // ・"hsp3utf.as" をインクルードしていること // ・UTF-8でコードを保存してコンパイルすること (故に標準のhsedでは不可) // --------------------------------------------------------------- // 参考サイト // http://wisdom.sakura.ne.jp/system/winapi/win32/win90.html #include "hsp3utf.as" #include "kernel32.as" #include "user32.as" #define global NULL 0 #define global GHND $00000042 #define global CF_UNICODETEXT $0000000D #module // ============================ // Unicodeでクリップボードをセットする // 引数1:セットする文字列 // ============================ #deffunc SetClipUtf str text, \ local uni, local hData, local lpData, local clipData // クリップボードを開く if (OpenClipboard(NULL) == 0) : return 0 // クリップボードを空にする EmptyClipboard // Windowsで使われるUnicodeはUTF-16なので変換する sdim uni, strlen(text) * 2 + 2 //UTF-16にするのでstrlen()の2倍 + ヌル文字(2バイト) cnvstow uni, text // メモリブロックを確保 // (各関数の詳しい動作などについては参考サイトを参照してください) dim hData hData = GlobalAlloc(GHND, varsize(uni)) if (hData == 0) : return 0 dim lpData lpData = GlobalLock(hData) // ----------------------------------------------------------------- // HSP3にはポインタに直接書き込む命令がないので、dupptrでクローン変数に書き込む // // このとき clipData = uni とかするとHSP3の通常文字列操作になり // 完コピにならないので、memcpyを使うこと!!! // ----------------------------------------------------------------- dupptr clipData, lpData, GlobalSize(hData), 2 memcpy clipData, uni, GlobalSize(hData) GlobalUnlock hData // ここで CF_UNICODETEXT を指定する SetClipboardData CF_UNICODETEXT, hData CloseClipboard return 1 #global SetClipUtf "HSP3🔺◢😀💯ⓗⓢⓟ♠♡♣♤♪" if (stat) { mes "クリップボードにコピーしました" }else { mes "失敗しました" }



ユーヤン

リンク

2021/8/24(Tue) 16:35:21|NO.93676

VSCodeでUTF-8コンパイルしてやってみたところ、できました。
とあるプログラマさんありがとうございます。



記事削除

記事NO.パスワード
(質問が解決したスレッドは他の利用者に活用してもらうため、削除しないようお願いします)

NO.93655への返信

マスコット

好きなマスコットを選んでください。

名前

e-mail
HOME
  1. 初めて利用する方は、HSP3掲示板の使い方をお読みください。
  2. 不要部分の多い長いスクリプトの投稿は ご遠慮ください。
  3. 書き込みは自動改行されません。適度に改行を入れてください。
  4. スクリプトは小文字の<pre>〜</pre>で囲むと見やすく表示できます。

削除用パスワード

解決したら質問者本人がここをチェックしてください。

エラー発生時、再送信すると二重送信になることがあります。
回答が得られたら、お礼書き込み時に[解決]チェックしてください。
SPAM防止のためURLから始まる文章は投稿できません。
SPAM防止のため英文字のみの本文を投稿することはできません。

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