「Windowsのクリップボードを用いた選択コンテンツの取得」の版間の差分

Notion-MW
Notion-MW
 
(同じ利用者による、間の1版が非表示)
91行目: 91行目:


* ペイントやWordは以前からテストにもよく使っていたし、以前は問題なく動いていた気がするのだが…時期としては<u>2023年6月時点</u>で不具合に気付いたので修正を行った。
* ペイントやWordは以前からテストにもよく使っていたし、以前は問題なく動いていた気がするのだが…時期としては<u>2023年6月時点</u>で不具合に気付いたので修正を行った。
* ところで、GetDataObject(に限らずClipboard関連関数全般?)はMainに<code>&#91;STAThread&#93;</code>が指定されていないとnullしか返ってこないので注意。


==== 実験 ====
==== 実験 ====
187行目: 188行目:


しばしば実行が止まってしまうのでconhostで実行しないこと。Windows Terminalなどを用いる。詳細は[[Windowsでのターミナル環境|Windowsでのターミナル環境]]を参照。
しばしば実行が止まってしまうのでconhostで実行しないこと。Windows Terminalなどを用いる。詳細は[[Windowsでのターミナル環境|Windowsでのターミナル環境]]を参照。
<span id="net-frameworkのバージョン"></span>
==== .NET (Framework)のバージョン ====
Windows 11などで普通にVisual Studioを入れると使われるバージョンが.NET 6などになってしまい、ランタイムが無いWindowsでは動かない。そこで、.NET Framework 4.6.2や3.5など、デフォルトのWindowsで動くバージョンを使ったビルドも提供している。
Windowsのバージョンと.NETのバージョンの対応状況はだいたい以下のような感じ。
[https://qiita.com/kawaidainf/items/82cb8db41299587f30e6 Windowsや IIS や .NET などのバージョン対応メモ &#35;Windows &#45; Qiita]
[https://learn.microsoft.com/ja-jp/dotnet/framework/migration-guide/versions-and-dependencies .NET Framework および Windows OS バージョン &#45; .NET Framework | Microsoft Learn]
[https://learn.microsoft.com/ja-jp/dotnet/framework/install/guide-for-developers .NET Framework Developer Pack または再頒布可能パッケージをインストールするには &#45; .NET Framework | Microsoft Learn]
3.5は古く、Windows 7を含む最も多くの環境で動作するが、クリップボードの一部の内容が失われる(Wordでやったときにフォント情報が消えるとか)ことがある。4.0以降ではこの問題はなさそうなので、4.0系の中で現在もサポートされている最も古いバージョンである4.6.2を使うのが良さそうである。
.NET Framework向けにビルドするには、まず該当のバージョンをVisual Studio Installerあるいは[https://dotnet.microsoft.com/ja-jp/download/visual-studio-sdks?cid=getdotnetsdk Visual Studio 用の .NET SDK のダウンロード]などからインストールする(SDKがあればTargeting Packは多分不要)。プロジェクト作成時には「(.NET Framework)」と付いているものを選ぶ(参考&#58; [https://learn.microsoft.com/en-us/answers/questions/959314/targeted-frameworks-not-showing-options-for-net-fr Targeted frameworks not showing options for .NET Framework 4.8 VS2022 &#45; Microsoft Q&amp;A])。ソースファイルは複数プロジェクトで共有できる(「既存の項目」の追加時に「リンクとして追加」する)(参考&#58; [https://stackoverflow.com/questions/1116465/how-do-you-share-code-between-projects-solutions-in-visual-studio .net &#45; How do you share code between projects/solutions in Visual Studio? &#45; Stack Overflow])。また、これに伴ってTupleなど一部の新しい機能を使わないようにソースを変更した。
* ValueTupleを.NET Frameworkで使うのは面倒そう。特に4.6.2以前。[https://stackoverflow.com/questions/38382971/predefined-type-system-valuetuple%C2%B42%C2%B4-is-not-defined-or-imported c&#35; &#45; Predefined type &#39;System.ValueTuple´2´ is not defined or imported &#45; Stack Overflow]など


<span id="クリップボード履歴windows10以降"></span>
<span id="クリップボード履歴windows10以降"></span>