[ Delphi / Pascal ] — начинающим: задаем вопросы (архивная - 2015)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by banned, 6 May 2007.

Thread Status:
Not open for further replies.
  1. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    но вообще советую полистать вот эти сайты:
    http://www.delphimaster.ru/cgi-bin/forum.pl?id=1233313403&n=5
    http://msdn.microsoft.com/en-us/library/aa394132(VS.85).aspx
    http://www.magsys.co.uk/delphi/magwmi.asp

    Да и что тебе не дает юзать HardwareIDExtractor.dll

    Но лучше копать в сторону WMI потому что это более надежнее
     
  2. Seregakz

    Seregakz New Member

    Joined:
    13 Jun 2009
    Messages:
    31
    Likes Received:
    1
    Reputations:
    0
    slesh (выше пример прога вообще молчит хотя у друга показало серийник) я бы юзал HardwareIDExtractor.dll )) так она платная эта либа(((((
     
    #4142 Seregakz, 15 Sep 2009
    Last edited: 15 Sep 2009
  3. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    так сразу бы и сказал что тебе нужен не серийный номер винта, а серийный номер тома.
    Code:
    var
     serial:dword;
     tmp:dword;
    begin
     if GetVolumeInformation('c:\', 0, 0, @serial, tmp, tmp, 0, 0) then
      showmessage(inttohex(serial, 8));
    
     
  4. Seregakz

    Seregakz New Member

    Joined:
    13 Jun 2009
    Messages:
    31
    Likes Received:
    1
    Reputations:
    0
    не тома) я скрины попутал =)
     
  5. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    ну тогда только WMI юзай
     
  6. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    Вот тут навоял небольшую функцию для получения серийника первого винта юзая WMI
    Код слегка через жопный, но работает.


    Code:
    uses ComObj, ActiveX;
    
    function CoInitialize(pvReserved: Pointer): HResult; stdcall;  external 'ole32.dll' name 'CoInitialize';
    
    function GetHDDSerialNum():string;
    var
      locator:variant;
      service:variant;
      properties:variant;
      p:IUnknown;
      p1:Olevariant;
      Enum:IEnumVariant;
      Value: Cardinal;
    begin
      CoInitialize(nil);
      locator := CreateOleObject('WbemScripting.SWbemLocator');
      service := locator.ConnectServer('.');
      properties := service.ExecQuery('SELECT * FROM Win32_PhysicalMedia');
    
      p := properties._NewEnum;
      p.QueryInterface(IEnumVariant, Enum);
      Enum.Next(1, p1, Value);
      result := p1.SerialNumber;
      locator := Unassigned;
    end;
    
    procedure TForm1.Button1Click(Sender: TObject);
    begin
     ShowMessage(GetHDDSerialNum());
    end;
    
     
  7. Mykola-bas

    Mykola-bas New Member

    Joined:
    24 Apr 2008
    Messages:
    0
    Likes Received:
    1
    Reputations:
    0
    slesh спс)
     
  8. Seregakz

    Seregakz New Member

    Joined:
    13 Jun 2009
    Messages:
    31
    Likes Received:
    1
    Reputations:
    0
    slesh спс но на вин7 не паше =)
     
  9. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    ну это же W7. Там чтобы получить такую инфу необходимо запустить прогу от имени админа. (в контекстном меню кликаеш - запустить от имени администратора)
    А вообще этот код в основном для XP и 2k3
    В Win 2k и ниже пахать скорее всего не будет.
     
    #4149 slesh, 15 Sep 2009
    Last edited: 15 Sep 2009
  10. alexey-m

    alexey-m Elder - Старейшина

    Joined:
    15 Jul 2009
    Messages:
    518
    Likes Received:
    100
    Reputations:
    37
    Вот посмотри тут и выбирай какой тебе по душе:
    http://www.cracklab.ru/download.php?action=list&n=MzU=
     
    1 person likes this.
  11. alexey-m

    alexey-m Elder - Старейшина

    Joined:
    15 Jul 2009
    Messages:
    518
    Likes Received:
    100
    Reputations:
    37
    Подскажите пожалуйста, как правильно преобразовать PWideChar в String
     
  12. inspektor

    inspektor Active Member

    Joined:
    4 Sep 2009
    Messages:
    0
    Likes Received:
    138
    Reputations:
    -3
    мне тож интересно!!!! :)
     
    6 people like this.
  13. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    WideCharToString
     
  14. alexey-m

    alexey-m Elder - Старейшина

    Joined:
    15 Jul 2009
    Messages:
    518
    Likes Received:
    100
    Reputations:
    37
    Не получается =( возвращает либо ошибку либо мусор...если можно небольшой пример...может чего не так делаю)
     
  15. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    скорее всего чтото не так делаеш. А также ты уверен что там именно widechar а не utf8

    вот пример простой
    Code:
    var
      s:string;
      pw:PWideChar;
      n:dword;
    begin
      n := 1024;
      getmem(pw, n); // выделим память под переменную
      GetUserNameW(pw, n); // получим имя юзверя в виде WideChar
      s := WideCharToString(pw); // Преобразуем в нормальный вид
      freemem(pw); // освободим память
      ShowMessage(s); // выведем на экран в нормальном виде
    end;
    
     
  16. Logan22

    Logan22 Member

    Joined:
    11 Sep 2009
    Messages:
    119
    Likes Received:
    17
    Reputations:
    0
    Подскажите пожалуйста...Я навичок
    Через Button каким скриптом открывать .bat файлы?
    типо по этому адрессу БАТ лежит "H:\010101.bat"
     
  17. ZirroCool

    ZirroCool Elder - Старейшина

    Joined:
    16 Sep 2006
    Messages:
    128
    Likes Received:
    55
    Reputations:
    20
    Logan22,если ты имеешь в виду запустить, то юзай функцию shellexecute или winexec!
     
  18. stalcer

    stalcer Member

    Joined:
    6 Jul 2009
    Messages:
    0
    Likes Received:
    48
    Reputations:
    0
    Я б сказа, для начала покажи как ты писал. Может синтаксис, и все дела?
     
    10 people like this.
  19. Logan22

    Logan22 Member

    Joined:
    11 Sep 2009
    Messages:
    119
    Likes Received:
    17
    Reputations:
    0
    В uses добавил ShellAPI
    на кнопку ввел скрипт этот

    begin
    ShellExecute(Handle, 'open',
    'H:\La2offline Interlude v1.9\la2offline.vo.uz\123\startGameServer.bat', '', nil,
    SW_SHOWNORMAL);
    end;

    Но когда нажимаю на кнопку в ехе"шнике появляется ошибки!
    Вот ошибка! _http://www.imagebam.com/image/32666949009139

    Но когда вручную врубаю без проги то всё норм, загрузка идет без этих ошибок!
     
  20. wolmer

    wolmer Member

    Joined:
    12 May 2009
    Messages:
    438
    Likes Received:
    97
    Reputations:
    9
    Пробывал через winexec? Если нет то попробуй, должно сработать
     
Thread Status:
Not open for further replies.