#1 19.12.06 16:50
HelloWorld от Microsoft.
Код::
// mbox.cs
using System;
using System.Runtime.InteropServices;
class HelloWorldFromMicrosoft
{
[DllImport("user32.dll")]
unsafe public static extern int MessageBoxA(uint hwnd, byte* lpText, byte* lpCaption, uint uType);
static unsafe void Main()
{
byte[] helloBug = new byte[] {0x5C, 0x3F, 0x3F, 0x5C, 0x21, 0x21, 0x21, 0x00};
uint MB_SERVICE_NOTIFICATION = 0x00200000u;
fixed(byte* pHelloBug = &helloBug[0])
{
for(int i=0; i<10; i++)
MessageBoxA(0u, pHelloBug, pHelloBug, MB_SERVICE_NOTIFICATION);
}
}
}компилим:
C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\csc.exe /unsafe mbox.cs
После 2-4 итерации Windows начинает, как правило, загибаться.
На Vista может кто-то проверить?
Offline
#4 20.12.06 00:38
Re: HelloWorld от Microsoft.
srf2000 написал(а):
а может нормально функцию описать?
unsafe public static extern int MessageBoxA(uint hwnd, string lpText, string lpCaption, uint uType);
Тогда вместо ожидаемой ASCII строки функция получит Юникодную. К тому же тут не нужен никакой unsafe, да и вообще экспортить MessageBox, тем более её ASCII вариант не стоит.
Offline

