次の図を見ると、2 つの .dll が同じファイル パスにあるため、'RSR.exe' アプリケーションは問題なく動作します。ただし、これら 2 つの .dll が RSR.exe と同じファイル パス/ディレクトリに配置されていない場合、クラッシュ/「プログラムが動作を停止しました」という結果になります。
これは、私が使用しようとしている次のコードです。
public static MainForm _mainForm;
static string subPath = @"C:\Users\Public\Documents\RSR";
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
if (!Directory.Exists(subPath))
{
Directory.CreateDirectory(subPath);
if (IntPtr.Size == 4)
{
File.WriteAllBytes("C:\\Users\\Public\\Documents\\RSR\\MouseKeyboardActivityMonitor.dll", Properties.Resources.MouseKeyboardActivityMonitor);
File.WriteAllBytes("C:\\Users\\Public\\Documents\\RSR\\WindowsFormsAero.dll", Properties.Resources.WindowsFormsAero);
}
else
{
File.WriteAllBytes("C:\\Users\\Public\\Documents\\RSR\\MouseKeyboardActivityMonitor.dll", Properties.Resources.MouseKeyboardActivityMonitor1);
File.WriteAllBytes("C:\\Users\\Public\\Documents\\RSR\\WindowsFormsAero.dll", Properties.Resources.WindowsFormsAero);
}
}
AssemblyName asm1 = AssemblyName.GetAssemblyName(@"C:\Users\Public\Documents\RSR\MouseKeyboardActivityMonitor.dll");
Assembly.Load(asm1);
AssemblyName asm2 = AssemblyName.GetAssemblyName(@"C:\Users\Public\Documents\RSR\WindowsFormsAero.dll");
Assembly.Load(asm2);
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
using (_mainForm = new MainForm())
{
Application.Run(_mainForm);
}
Cursor normalCursor1 = new Cursor(new System.IO.MemoryStream(Properties.Resources.cursor_normal));
SetSystemCursor(normalCursor1.Handle, 32512);
}
次の図は、2 つの .dll が同じディレクトリ/パス内にない場合のクラッシュ情報の図です。
任意の支援をいただければ幸いです。
ありがとう。