Windows – こみなのメモ帳 / 趣味と実益のネタ帳 Wed, 25 Sep 2024 03:48:29 +0000 ja hourly 1 https://wordpress.org/?v=6.1.1 [windows10] クリップボードが使えない? /archives/1225/ /archives/1225/#respond Wed, 25 Sep 2024 03:48:29 +0000 https://www.komina.info/?p=1225 原因を探す

ある日、CTRL+C してもクリップボードにコピーされない事象が発生しました。

サクラエディタにはクリップボードに何かコピーされるとツールボックスの貼付アイコン

が活性化されるので、これを利用して状況を確認。どうやら一瞬だけ活性化されるようなので、何らかのアプリ?サービス?がクリップボードをクリアしているようです。どんなときにクリアされるのか、PCを再起動して普段使っているアプリケーションを1個ずつ起動しながら、クリップボードが使えなくなる条件を見極めていくことにしました。

で、見つかりました。リモートデスクトップクライアントを特定の接続先に接続すると事象が発生しました。

リモートデスクトップには、ローカルPCと接続先PCとの間でクリップボードを共有する機能があります。これを実現するために接続先PCには「RDP クリップボード モニター」というプログラムが起動しています。このプログラムの調子が悪くなっていたのが原因でした。

対処方法

対処としては、接続先PCで動いている「RDP クリップボード モニター」を再起動すること、になります。タスクマネージャでプロセスタブで「RDP クリップボード モニター」を探して、あるいは詳細タブで「rdpclip.exe」を探してタスクの終了を行います。

その後に、タスクマネージャのファイル>新しいタスクの実行から「rdpclip.exe」を実行してください。

参考

]]>
/archives/1225/feed/ 0
[windows10] リモートデスクトップ経由で音が出なくなった /archives/1189/ /archives/1189/#respond Mon, 10 Jun 2024 02:06:25 +0000 https://www.komina.info/?p=1189 リモートデスクトップ経由でサウンド再生できていたのに、ある日突然音が出なくなりました。

検索でまずヒットするのは、クライアント側の設定も「リモートオーディオ再生>このコンピュータで再生」を選ぶこと。これまで音が出ていたので設定内容が原因となっている可能性は低いです。

念のため、リモート側のPCのサウンド設定も「リモートオーディオ 100%」になっていること、設定が知らないうちに変わったりしてないことを確認したのち、さらに調べるとWindows Autdioというサービスを再起動する方法を発見しました。これが功を奏したので方法をメモしておきます。

Win+R でファイル名を指定して実行より services.msc を実行するとサービスの一覧を確認できますので、そこから再起動してみてください。

]]>
/archives/1189/feed/ 0
PowerShellで変数を引数にしてコマンドを実行するときの注意 /archives/1105/ /archives/1105/#respond Wed, 31 Jan 2024 06:35:40 +0000 https://www.komina.info/?p=1105 今までコマンドプロンプトばかり使っていた私が、PowerShellを使い始めて戸惑った点の備忘録です。

分かりやすくするためにJavaで下記のようなプログラムを書きました。

public class Main {
    public static void main(String[] args) {
        System.out.print("key1=");
        System.out.println(System.getProperty("key1"));
        System.out.print("key2=");
        System.out.println(System.getProperty("key2"));
    } 
}

このプログラムに対して、java -Dkey1=abc -Dkey2=def Main.java とすると実行結果は以下になります。

E:\>java -Dkey1=abc -Dkey2=def Main.java
key1=abc
key2=def

-Dkey1=abc -Dkey2=defという部分を環境変数に設定して実行することもできます。

E:\>set OPTIONS=-Dkey1=abc -Dkey2=def

E:\>java %OPTIONS% Main.java
key1=abc
key2=def

さて、同じことをPowerShellで行ってみます。

PS E:\> java -Dkey1=abc -Dkey2=def Main.java
key1=abc
key2=def

ここまではコマンドプロンプトと同じです。引き継いだ環境変数をそのまま使って実行してみます。

PS E:\> $env:OPTIONS
-Dkey1=abc -Dkey2=def
PS E:\> java $env:OPTIONS Main.java
key1=abc -Dkey2=def
key2=null

なんとkey1"abc -Dkey2=def"が設定されてしまいました。これは環境変数だけでなく、PowerShellの変数でも同じで、1変数が1引数として渡ってしまうようです。

PS E:\> $OPT="-Dkey1=ABC -Dkey2=DEF"
PS E:\> $OPT
-Dkey1=ABC -Dkey2=DEF
PS E:\> java $OPT Main.java
key1=ABC -Dkey2=DEF
key2=null

Javaを起動するバッチなどで実行時オプションをひとまとめにして 環境変数JAVA_OPTIONSに設定しておくことをよくやっていましたが、これができなさそうです。

結論としましては、splitメソッドを使って空白で分割することで問題を回避できるようです。バッチをシェルスクリプトへ移植する際は気を付けないといけませんね。

PS E:\> $OPTS = ($OPT.split(' '))
PS E:\> java $OPTS Main.java
key1=ABC
key2=DEF
PS E:\>

ちなみに$OPTSは配列型になっているみたいです。

PS E:\> $OPTS.GetType()

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     String[]                                 System.Array

PS E:\>

追記。久しぶりにコマンドラインからJavaのプログラムを実行してみたらコンパイルしないでも実行できるようになっててビックリ。

]]>
/archives/1105/feed/ 0