技術メモ

【C#】PictureBoxに画像をドラッグ&ドロップできない

原因

  1. AllowDropがtrueになっていない。
    フォームロードで「this.pictureBox1.AllowDrop = true;」を記載する
  2. Visual Studioを管理者で起動している。
    以下のようにタスクバーに「(管理者)」と記載されている場合は、ドラッグ&ドロップできない。一般ユーザーでVisual Stdioを起動すればOK。

【Windows Bat】プログラムを強制終了させる

次のnotepad.exeの部分を書き換える

taskkill /im notepad.exe /f

実行すると強制終了したプログラムのプロセスIDも含めて表示される(以下の例は2つ起動中であった場合に両方とも終了された例)

成功: プロセス "notepad.exe" (PID 15660) は強制終了されました。
成功: プロセス "notepad.exe" (PID 5492) は強制終了されました。

なお、該当するプログラムが起動中でない場合は「エラー: プロセス “notepad.exe” が見つかりませんでした。」といった文字が返る

 

参考

【Windows Bat】プログラムの起動時間とプロセスIDを取得する

【Windows Bat】プログラムの起動時間とプロセスIDを取得する

次のnotepad.exeの部分を書き換える

wmic process where 'name="notepad.exe"' get name,creationdate,processId

実行結果は以下の通り(起動日時、EXE名、プロセスIDが返る)

CreationDate               Name         ProcessId
20211202103244.517899+540  notepad.exe  11476

EXEが1つも起動していない場合は、「利用できるインスタンスがありません。」という文字が返ってくる

 

参考

【Windows Bat】プログラムを強制終了させる

【SQL Server】1~500までの連番のレコードを生成する

使う機会があるか分かりませんが、テストで大量のユニークなレコードが欲しい場合とかに役に立つかも…

with allNumber as (
	/*1~500までの連番のレコード生成*/
	select 1 as no
	union all
	select no + 1
	from allNumber
	where  no < 500
)

select
  no
from allNumber

/*再帰の上限がデフォルトで100までなので、上限無し(=0)に変更*/
OPTION ( MAXRECURSION 0 )

 

 

【Windows】パソコンの起動日時を取得する

コマンドプロンプトにて「systeminfo」を入力してEnterキーを押下する。

プロセッサ情報を読み込んでいます… などがしばらく表示されるので終わるまで待つ。

完了後、「システム起動時間: 2021/11/17, 18:46:02」というように表示される。

これ以外に以下のような情報も取得できる(一例)

  • ホスト名
  • OS名
  • OSバージョン
  • 最初のインストール日付
  • プロセッサ
  • BIOSバージョン

【SQL Server】ビット演算(AND,OR)を行う

/*
 1111111100000000 FF00(16進数)
 1110101011011011 60123(10進数)
--------------------------------------
 1110101000000000 59904(10進数) AND演算結果
 1111111111011011 65499(10進数) OR演算結果
 */
select
	CAST(0xFF00 as int) & 60123 as [AND演算],
	CAST(0xFF00 as int) | 60123 as [OR演算]

&(AND)と|(OR)の記号を利用する。

上記の例では、見やすいように16進数で記載する例も併せて載せている

 

【C#】XMLの予約語をエスケープする&元に戻す

エスケープする際には

System.Security.SecurityElement.Escape("<aaa>");

を利用する。

エスケープされた文字列を元に戻すには

System.Net.WebUtility.HtmlDecode("&lt;aaa&gt;");

を利用する。

違うクラスなので不安になるが、少なくともエスケープが必要な次の4つの文字

< > ” ‘ 

で問題なくデコードされた。

 

【curl】パラメータをPOSTして、その結果をファイル出力する

コマンド

curl -o output.txt -w "ステータスコード:%%{http_code}\r\n" -X POST -F "param1=aaaa" -F "param2=bbbb" http://localhost/hoge

コマンド実行結果

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  6691  100  6333  100   358   6333    358  0:00:01 --:--:--  0:00:01 30552
ステータスコード:200

あと、-oで指定したファイルがカレントディレクトリに出力される。

 

補足

  • 「-w “ステータスコード:%%{http_code}\r\n”」は記載しなくても大丈夫です。省略すると、実行結果の「ステータスコード:200」の部分は表示されない。
  • 実行結果のCurrentSpeedなどの情報が不要であれば「-s」を付ければ、非表示になる。

【Android Studio】ApkProvisionException: Error loading build artifacts from:~エラーが発生する

事象

作成したアプリを起動させようと、再生ボタン(Run ‘app’)をクリックしても、すぐに再生ボタンのマークに戻ってしまう。

コンソール出力を見ると、以下のように記載されていた。

Unable to determine application id: com.android.tools.idea.run.ApkProvisionException: Error loading build artifacts from: C:\temp\xxxxx\app\build\outputs\apk\debug\output-metadata.json

原因不明のため、Android StudioのメニューのFile→Invalidate Caches / Restartをクリック。以下のメッセージが表示されるので「Invalidate and Restart」をクリック。※Android Studioが再起動されます!

再起動後、普通にアプリが起動するようになった。

Eclipseの時もクリーンを使うタイミングが何度かあったので、こうなったときは何も考えずに「Invalidate Caches / Restart」すればいいかな。。。

 

 

【Teams】チャネルのメールアドレスを取得できない

Teamsで新しくチームを作成し、一般チャネルの・・・メニューから「メールアドレスを取得」をクリックすると、「現在チームを設定中です。後ほどもう一度お試しください。」と表示された。

作成したばかりだったので、数日待って試してみたが結果は変わらず。

その後、一般チャネルの「ファイル」タブを開くとエラーが出ることに気付いた。その横の「Wiki」をクリックしたところ、新しいページが作成された。

この状態で、再度「メールアドレスを取得」をクリックすると、今度はメールアドレスが取得できた。。。

 

尚、この取得したメールアドレスにメールを送信すると、その内容がチャネルに投稿される。