C#/vb.netでパスが通っていない regasm.exe を呼出するexeを作る

ネタ元

x86でexe作れば32bit版の、
x64でexe作れば64bit版の、regasm呼び出せる

C#

using System.Runtime.InteropServices;
using System.Text;

class Program
{
    static void Main(string[] args)
    {
        // RegAsm のパスを取得
        string path = System.IO.Path.Combine(RuntimeEnvironment.GetRuntimeDirectory(), "RegAsm.exe");
        // パスをコンソールに出力
        Console.WriteLine("[" + path + "]");

        System.Diagnostics.Process p = new System.Diagnostics.Process();
        p.StartInfo.FileName = path;
        // 渡されたコマンドライン引数をそのまま渡す
        StringBuilder buff = new StringBuilder(128);
        foreach(string arg in args)
        {
            buff.Append(arg + " ");
        }
        p.StartInfo.Arguments = buff.ToString();
        // 出力を取得できるようにする
        p.StartInfo.UseShellExecute = false;
        p.StartInfo.RedirectStandardOutput = true;
        p.StartInfo.RedirectStandardInput = false;
        // ウィンドウを表示しない
        p.StartInfo.CreateNoWindow = true;

        // 起動
        p.Start();

        // 出力を取得
        string results = p.StandardOutput.ReadToEnd();
        // プロセス終了まで待機する
        p.WaitForExit();
        p.Close();
        // 出力された結果を表示
        Console.WriteLine(results);
    }
}

vb.net

Imports System.Runtime.InteropServices
Imports System.Text

Module Program

    Sub Main()

        'RegAsm のパスを取得
        Dim path As String = IO.Path.Combine(RuntimeEnvironment.GetRuntimeDirectory(), "RegAsm.exe")
        'パスをコンソールに出力
        Console.WriteLine("[" & path & "]")

        Dim p As New System.Diagnostics.Process()
        p.StartInfo.FileName = path
        '渡されたコマンドライン引数をそのまま渡す
        Dim args As New StringBuilder(128)
        For Each arg As String In My.Application.CommandLineArgs
            args.Append(arg & Space(1))
        Next
        p.StartInfo.Arguments = args.ToString
        '出力を取得できるようにする
        p.StartInfo.UseShellExecute = False
        p.StartInfo.RedirectStandardOutput = True
        p.StartInfo.RedirectStandardInput = False
        'ウィンドウを表示しない
        p.StartInfo.CreateNoWindow = True

        '起動
        p.Start()

        '出力を取得
        Dim results As String = p.StandardOutput.ReadToEnd()
        'プロセス終了まで待機する
        p.WaitForExit()
        p.Close()
        '出力された結果を表示
        Console.WriteLine(results)
    End Sub

End Module

batファイルでメッセージボックスを出す 

vbsファイルを出力して実行させるという荒業

rem メッセージ表示
echo msgbox “メッセージ本文”,vbInformation,”タイトル” > %TEMP%/msgbox.vbs & %TEMP%/msgbox.vbs

rem ファイル削除
del /Q %TEMP%\msgbox.vbs

pause

PCが妙に重くなったときの原因の一つ ネットが重くてギリギリつながってる程度になってる

完全に切れてるならいいんだけど、
微妙にサーバーレスポンスがあったりするような、頑張ってリトライ処理が走りそうな状況になると
マウスがカクつくなど、全体的に重くなることがある。

思い切ってネット切ると軽くなる

ExcelVBAで押されたキー判定する

GetAsyncKeyState ()を使う

Option Explicit

#If Win64 Then
Private Declare PtrSafe Function GetAsyncKeyState Lib "User32.dll" (ByVal vKey As Long) As Integer
#Else
Private Declare Function GetAsyncKeyState Lib "User32.dll" (ByVal vKey As Long) As Integer
#End If


'Ctrl+Cキー
Public Sub CheckKey()
     If GetAsyncKeyState(vbKeyControl) Then
        If GetAsyncKeyState(vbKeyC) Then
            ...
        End If
     End If

End Sub


キーコード表

F1~F16

F1 112 vbKeyF1
F2 113 vbKeyF2
F3 114 vbKeyF3
F4 115 vbKeyF4
F5 116 vbKeyF5
F6 117 vbKeyF6
F7 118 vbKeyF7
F8 119 vbKeyF8
F9 120 vbKeyF9
F10 121 vbKeyF10
F11 122 vbKeyF11
F12 123 vbKeyF12
F13 124 vbKeyF13
F14 125 vbKeyF14
F15 126 vbKeyF15
F16 127 vbKeyF16

0~9 (キーボード)

0 48 vbKey0
1 49 vbKey1
2 50 vbKey2
3 51 vbKey3
4 52 vbKey4
5 53 vbKey5
6 54 vbKey6
7 55 vbKey7
8 56 vbKey8
9 57 vbKey9

0~9(テンキー)

0 96 vbKeyNumpad0
1 97 vbKeyNumpad1
2 98 vbKeyNumpad2
3 99 vbKeyNumpad3
4 100 vbKeyNumpad4
5 101 vbKeyNumpad5
6 102 vbKeyNumpad6
7 103 vbKeyNumpad7
8 104 vbKeyNumpad8
9 105 vbKeyNumpad9
アスタリスク 106 vbKeyMultiply
プラス 107 vbKeyAdd
Enter 108 vbKeySeparator
マイナス 109 vbKeySubtract
ピリオド 110 vbKeyDecimal
スラッシュ 111 vbKeyDivide

A~Z

A 65 vbKeyA
B 66 vbKeyB
C 67 vbKeyC
D 68 vbKeyD
E 69 vbKeyE
F 70 vbKeyF
G 71 vbKeyG
H 72 vbKeyH
I 73 vbKeyI
J 74 vbKeyJ
K 75 vbKeyK
L 76 vbKeyL
M 77 vbKeyM
N 78 vbKeyN
O 79 vbKeyO
P 80 vbKeyP
Q 81 vbKeyQ
R 82 vbKeyR
S 83 vbKeyS
T 84 vbKeyT
U 85 vbKeyU
V 86 vbKeyV
W 87 vbKeyW
X 88 vbKeyX
Y 89 vbKeyY
Z 90 vbKeyZ

その他のボタン

BackSpace 8 vbKeyBack
Tab 9 vbKeyTab
Enter 13 vbKeyReturn
Shift 16 vbKeyShift
Ctrl 17 vbKeyControl
Alt 18 vbKeyMenu
Pause 19 vbKeyPause
Esc 27 vbKeyEscape
変換 28  
無変換 29  
スペース 32 vbKeySpace
PgUp 33 vbKeyPageUp
PgDown 34 vbKeyPageDown
Home 36 vbKeyHome
37 vbKeyLeft
38 vbKeyUp
39 vbKeyRight
40 vbKeyDown
Ins 45 vbKeyInsert
Del 46 vbKeyDelete
Win 91  
ポップアップ 93  
NumLock 144 vbKeyNumlock
: 186  
; 187  
, 188  
- 189  
. 190  
/ 191  
@ 192  
[ 219  
\ 220  
] 221  
^ 222  
226  

AppleStoreで買ったものの領収書をもらう方法

以下フォームから申請する。
商品を出荷してから1週間は必要&
1週間以上経過してても2営業日ぐらいかかるらしいので急いでるときは注意。
https://www.apple.com/jp/feedback/aos/receipt_request.html

購入したら届くメールの中の「ご注文番号」「ご請求者様」を入力
メールアドレスは購入時のものじゃなくてOK

AppleStoreで買ったものの領収書をもらう方法

以下フォームから申請する。
商品を出荷してから1週間は必要&
1週間以上経過してても2営業日ぐらいかかるらしいので急いでるときは注意。
https://www.apple.com/jp/feedback/aos/receipt_request.html

購入したら届くメールの中の「ご注文番号」「ご請求者様」を入力
メールアドレスは購入時のものじゃなくてOK

C#にてWebView2 で Web サイトを表示

https://developer.microsoft.com/ja-jp/microsoft-edge/webview2/
 の、右下の修正済みバージョンをDL
f:id:shikaku:20210210103518p:plain
・C#のプロジェクト作って、bin/debugやbin/releaseフォルダの下にDL解凍したフォルダをまるごとコピー
・プロジェクトの csproj ファイルの ItemGroup に、下記サイトの PackageReference を登録する。https://www.nuget.org/packages/Microsoft.Web.WebView2/
f:id:shikaku:20210210103700p:plain

  <ItemGroup>
    <PackageReference Include="Microsoft.Web.WebView2" Version="1.0.705.50" />
  </ItemGroup>

・ソースコード

using System.IO;
using System.Windows.Forms;
using Microsoft.Web.WebView2.Core;
using Microsoft.Web.WebView2.WinForms;

namespace Test
{
    public class Form1 : Form
    {
        private WebView2 view2;
        private string WebView2Path = Path.Combine(Directory.GetCurrentDirectory(), "Microsoft.WebView2.FixedVersionRuntime.88.0.705.63.x64");

        public Form1()
        {
            view2 = new WebView2();
            view2.Dock = DockStyle.Fill;
            Controls.Add(view2);
            Navigate("https://www.google.com");
        }

        private async void Navigate(string url)
        {
            await view2.EnsureCoreWebView2Async(CoreWebView2Environment.CreateAsync(WebView2Path).Result);
            view2.CoreWebView2.Navigate(url);
        }

        private async void NavigateToString(string source)
        {
            await view2.EnsureCoreWebView2Async(CoreWebView2Environment.CreateAsync(WebView2Path).Result);
            view2.NavigateToString(source);
        }
    }
}

WebView2Path = Path.Combine(Directory.GetCurrentDirectory(), "Microsoft.WebView2.FixedVersionRuntime.88.0.705.63.x64");
の部分が、バージョンによって変わるので注意。