我想在具有C#应用程序的64位Windows 8计算机上从Windows XP的32位shimgvw.dll运行ImageView_Fullscreen函数(目标框架:4,AppType:控制台应用)。函数根本不起作用,但是在调用MessageBox.Show之后,我看到了一张奇怪的图片。为什么是这样?请给我解释一下。 这是我的应用程序C#代码:
[DllImport("kernel32.dll", EntryPoint = "AddAtomW", CharSet = CharSet.Unicode)]
static extern ushort AddAtom(string lpString);
//shimgvw.dll is from WindowsXP (6.00.2900.5512 version)
//For ImageView_FullscreenW and CharSet.Unicode result is the same
[DllImport(@"D:\Graphic Soft\ShimgvwXP\shimgvw.dll", CharSet = CharSet.Ansi, EntryPoint = "ImageView_FullscreenA", SetLastError = true)]
static extern void ImageView_Fullscreen(IntPtr i, IntPtr dll, string path, int wndMode);
static void Main(string[] args)
{
MessageBox.Show("Test"); //Working!
AddAtom("FailObsoleteShellAPIs"); //Without that atom LoadLibrary fails
IntPtr hinstance = LoadLibrary(@"D:\Graphic Soft\ShimgvwXP\shimgvw.dll");
if (hinstance != IntPtr.Zero)
{
MessageBox.Show("Test"); //Working!
//Not doing anything...Though it must show image. Image is exists
ImageView_Fullscreen(IntPtr.Zero, hinstance, @"D:\Wallpapers\0001_2.jpg", 3);
uint err = GetLastError();
MessageBox.Show("Error: " + err); //NOT WORKING!!!
Console.WriteLine("Error: " + err); //Working. Prints out: "Error: 0"
//Not doing anything...This image is NOT exists
ImageView_Fullscreen(IntPtr.Zero, hinstance, @"D:\Wallpapers\not_existed_image.jpg", 3);
err = GetLastError();
MessageBox.Show("Error: " + err); //NOT WORKING!!!
Console.WriteLine("Error: " + err); //Working. Prints out: "Error: 2 (code ERROR_FILE_NOT_FOUND)"
}
Console.ReadKey();
}
答案 0 :(得分:-2)
代替使用消息框, 您可以使用:
ScriptManager.RegisterStartupScript(this.Page, this.GetType(), Guid.NewGuid().ToString().Trim(), "javascript:alert('This is my First Answer on Stack Overflow');", true);
return;**
string abc = "StackOverFlow";
ScriptManager.RegisterClientScriptBlock((Page)(HttpContext.Current.Handler), typeof(Page), "alert", "javascript:alert('" + Convert.ToString(abc("Cannot Be Empty. ")) + "');", true); return;