Официальный сайт студ.городка НГТУ
Программирование и БД » HelloWorld от Microsoft. 

#1  19.12.06 16:50

juf
Профиль

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

#2  19.12.06 19:32

Re: HelloWorld от Microsoft.

а может нормально функцию описать?
unsafe public static extern int MessageBoxA(uint hwnd, string lpText, string lpCaption, uint uType);

Offline

#3  20.12.06 00:30

Re: HelloWorld от Microsoft.

компиляторы еще не умеют распознавать кривой код! :)

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

Программирование и БД » HelloWorld от Microsoft. 

ФутЕр:)

© Hostel Web Group, 2002-2025.   Сообщить об ошибке

Сгенерировано за 0.026 сек.
Выполнено 14 запросов.