::: µ¨ÆÄÀÌ Tip&Trick :::

µ¨ÆÄÀÌ Tip&Trick ¼º°Ý¿¡ ¸ÂÁö ¾Ê´Â ±¤°í,ºñ¹æ,Áú¹®ÀÇ ±ÛÀº Áï½Ã »èÁ¦Çϸç
³»¿ëÀ» º¹»çÇÏ¿© »ç¿ëÇÒ °æ¿ì ¹Ýµå½Ã ÀÌ°÷(http://www.howto.pe.kr)À» Ãâó·Î ¸í½ÃÇÏ¿© ÁÖ¼¼¿ä


Category

  ±è¿µ´ë(2003-03-07 20:24:19, Hit : 7047, Vote : 1683
 driveÀÇ ÀϷùøÈ£ ¹Ù²Ù±â

>How can I change floppy serial number (e.g. 1111-2222) in Delphi 4?

[1] Borland TI 475D, Getting and setting a disks serial number
    http://www.borland.com/devsupport/delphi/ti_list/TI475D.html


[2] The volume serial number is stored in bytes 39-42 of the boot sector
    on the disk. So, the basic approach looks like this:

type
   TSector = array[0..511] of Byte;

procedure ChangeVolumeSerialNumber(Drive: Char;
   SerialNumber: LongWord);
   var
     Boot: TSector;
   begin
   ReadBoot(Drive, Boot);
   Move(SerialNumber, Boot[39], SizeOf(SerialNumber));
   WriteBoot(Drive, Boot) end;

A complication occurs, however, because reading and writing the boot
sector in NT requires completely different code from that used in
reading and writing the boot sector in Win95/98.

So here's the complete code, taking into account the differences
between NT and Win95/98:

type
   TSector = array[0..511] of Byte;

procedure ReadBootNT(Drive: Char; var Boot: TSector);
   var
     BytesRead: Cardinal;
     H: THandle;
   begin
   H := CreateFile(PChar(Format('\.%s:', [UpCase(Drive)])),
     GENERIC_READ, 0, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
   if H = INVALID_HANDLE_VALUE then
     raise Exception.Create(SysErrorMessage(GetLastError));
   try
     if not ReadFile(H, Boot, SizeOf(Boot), BytesRead, nil)then
       raise Exception.Create(SysErrorMessage(GetLastError));
   finally
     CloseHandle(H) end end;

procedure WriteBootNT(Drive: Char; var Boot: TSector);
   var
     BytesWritten: Cardinal;
     H: THandle;
   begin
   H := CreateFile(PChar(Format('\.%s:', [UpCase(Drive)])),
     GENERIC_WRITE, 0, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
   if H = INVALID_HANDLE_VALUE then
     raise Exception.Create(SysErrorMessage(GetLastError));
   try
     if not WriteFile(H, Boot, SizeOf(Boot), BytesWritten, nil)then
       raise Exception.Create(SysErrorMessage(GetLastError));
   finally
     CloseHandle(H) end end;

type
   TDiocRegisters = record
     EBX, EDX, ECX, EAX, EDI, ESI, Flags: LongWord end;

   TVWin32CtlCode = (ccNone, ccVWin32IntIoctl, ccVWin32Int25,
     ccVWin32Int26, ccVWin32Int13);

function VWin32(CtlCode: TVWin32CtlCode;
   var Regs: TDiocRegisters): Boolean;
   var
     Device: THandle;
     Count: LongWord;
   begin
   Device := CreateFile('\.VWIN32', 0, 0, nil, 0,
     FILE_FLAG_DELETE_ON_CLOSE, 0);
   if Device = INVALID_HANDLE_VALUE then
     raise Exception.Create(SysErrorMessage(GetLastError));
   try
     Result := DeviceIoControl(Device, Ord(CtlCode), @Regs,
       SizeOf(Regs), @Regs, SizeOf(Regs), Count, nil);
   finally
     CloseHandle(Device) end end;

procedure ReadBoot95(Drive: Char; var Boot: TSector);
   var
     Regs: TDiocRegisters;
   begin
   with Regs do begin
     EAX := Ord(UpCase(Drive)) - Ord('A');
     EBX := LongWord(@Boot);
     ECX := 1;
     EDX := 0 end;
   if not VWin32(ccVWin32Int25, Regs) then
     raise Exception.Create(SysErrorMessage(GetLastError)) end;

procedure WriteBoot95(Drive: Char; var Boot: TSector);
   var
     Regs: TDiocRegisters;
   begin
   with Regs do begin
     EAX := Ord(UpCase(Drive)) - Ord('A');
     EBX := LongWord(@Boot);
     ECX := 1;
     EDX := 0 end;
   if not VWin32(ccVWin32Int26, Regs) then
     raise Exception.Create(SysErrorMessage(GetLastError)) end;

procedure ChangeVolumeSerialNumber(Drive: Char;
   SerialNumber: LongWord);
   var
     Boot: TSector;
   begin
   case Win32Platform of
     VER_PLATFORM_WIN32_WINDOWS:
       ReadBoot95(Drive, Boot);
     VER_PLATFORM_WIN32_NT:
       ReadBootNT(Drive, Boot) end;
   Move(SerialNumber, Boot[39], SizeOf(SerialNumber));
   case Win32Platform of
     VER_PLATFORM_WIN32_WINDOWS:
       WriteBoot95(Drive, Boot);
     VER_PLATFORM_WIN32_NT:
       WriteBootNT(Drive, Boot) end end;





451   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] ÆÄÀÏÀÇ º¯°æ/»ý¼º/»ç¿ëÇÑ ³¯Â¥ ¹Ù²Ù±â  ±è¿µ´ë 2003/03/07 5372 1344
450   [½Ã½ºÅÛ] ¼³Ä¡µÈ modem ¸®½ºÆ® ±¸ÇÏ±â  ±è¿µ´ë 2003/03/07 5367 1539
449   [À©µµ¿ìÁî API] Windows 3.1x/32s/95/98/NT ±¸ºÐÇÏ±â  ±è¿µ´ë 2003/03/07 3436 976
448   [½Ã½ºÅÛ] WM_COPYDATA ¸Þ½ÃÁö¸¦ »ç¿ëÇÑ IPC  ±è¿µ´ë 2003/03/07 7185 1746
447   [½Ã½ºÅÛ] ¸¶¿ì½ºÀÇ ÁÂ,¿ì ¹öÆ°ÀÇ µ¿ÀÛ ¹Ù²Ù±â  ±è¿µ´ë 2003/03/07 4730 1286
446   [À©µµ¿ìÁî API] windowÀÇ maximize, minimize ¾Ë¾Æ³»±â  ±è¿µ´ë 2003/03/07 5228 1385
445   [½Ã½ºÅÛ] WM_COPYDATA ¸Þ½ÃÁö¸¦ »ç¿ëÇÑ IPC 2  ±è¿µ´ë 2003/03/07 6427 1811
444   [À©µµ¿ìÁî API] µ¥½ºÅ©Å¾ ¾ÆÀÌÄÜ ÀüºÎ °¨Ãß±â/º¸ÀÌ±â  ±è¿µ´ë 2003/03/07 4400 1282
443   [À©µµ¿ìÁî API] ¹ÙÅÁÈ­¸é, ½ÃÀÛ¸Þ´º icon ¼û±â±â  ±è¿µ´ë 2003/03/07 5700 1353
442   [½Ã½ºÅÛ] ¸¶¿ì½º°¡ ¼³Ä¡µÇ¾î ÀÖ´ÂÁö °Ë»çÇÏ±â  ±è¿µ´ë 2003/03/07 7390 1973
441   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] MemoÀÇ ÀÔ·Â Çà¼ö/¿­¼ö Á¦ÇÑÇÏ±â  ±è¿µ´ë 2003/03/07 4135 1350
440   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] À©µµ¿ìÁî ÆÄÀϸíÀÇ ¹«È¿ÇÑ ±¸¼º¹®ÀÚ  ±è¿µ´ë 2003/03/07 5118 1565
439   [½Ã½ºÅÛ] ÆÄÀÏÀÌ ´Ù¸¥ ÇÁ·Î±×·¥¿¡ ÀÇÇØ »ç¿ëÁßÀÎÁö °Ë»ç  ±è¿µ´ë 2003/03/07 6837 1589
438   [½Ã½ºÅÛ] ÀÏÁ¤½Ã°£ °æ°úÈÄ ¾ø¾îÁö´Â MessageBox  ±è¿µ´ë 2003/03/07 7880 1527
437   [½Ã½ºÅÛ] CPU speed ±¸Çϱâ 2  ±è¿µ´ë 2003/03/07 4668 1275
436   [³×Æ®¿÷/ÀÎÅͳÝ] LAN ¿¡ Á¢¼ÓÇß´ÂÁö °Ë»çÇÏ±â  ±è¿µ´ë 2003/03/07 4957 1317
435   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] TIFF Images and manipulation  ±è¿µ´ë 2003/03/07 5580 1405
434   [½Ã½ºÅÛ] reboot 95/98/NT  ±è¿µ´ë 2003/03/07 5020 1416
433   [³×Æ®¿÷/ÀÎÅͳÝ] Ethernet ·£Ä«µåÀÇ MAC adress ±¸ÇÏ±â  ±è¿µ´ë 2003/03/07 7931 2288
432   [³×Æ®¿÷/ÀÎÅͳÝ] Serial Port »ç¿ëÇÏ±â  ±è¿µ´ë 2003/03/07 7427 1886
431   [À©µµ¿ìÁî API] IEÀÇ ÇöÀç url °¡Á®¿À±â  ±è¿µ´ë 2003/03/07 5167 1274
430   [½Ã½ºÅÛ] DOS-matrix ÇÁ¸°ÅÍ¿¡ ÀμâÇÏ±â  ±è¿µ´ë 2003/03/07 5167 1315
429   [À©µµ¿ìÁî API] À©µµ¿ìÁî "½ÃÀÛ" ¸Þ´º¸¦ ³» ÇÁ·Î±×·¥ ¾ÈÀ¸·Î...  ±è¿µ´ë 2003/03/07 5087 1392
428   [À©µµ¿ìÁî API] ¸ðµç âÀ» ¾ÆÀÌÄÜ Ç¥½Ã/Ãë¼Ò  ±è¿µ´ë 2003/03/07 4805 1340
427   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] RichEdit È­¸é¿¡ º¸¿©Áö´Â ù¹ø°/¸¶Áö¸· Çà¹øÈ£  ±è¿µ´ë 2003/03/07 6030 1566
426   [³×Æ®¿÷/ÀÎÅͳÝ] ³×Æ®¿öÅ© ÄÄÇ»ÅÍ°¡ Á¸ÀçÇÏ´ÂÁö °Ë»çÇÏ±â  ±è¿µ´ë 2003/03/07 5363 1367
425   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] ÅؽºÆ® ÆÄÀÏ ÇÕÄ¡±â(Merging)  ±è¿µ´ë 2003/03/07 5678 1296
424   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] TRichEdit¸¦ »ç¿ëÇÑ syntax highlighting ¿¹Á¦  ±è¿µ´ë 2003/03/07 7024 1858
423   [³×Æ®¿÷/ÀÎÅͳÝ] NetMask ¾Ë¾Æ³»±â  ±è¿µ´ë 2003/03/07 7684 1958
422   [À©µµ¿ìÁî API] ApplicationÀÇ ÃÖ¼ÒÈ­½Ã Zooming È¿°ú ÁÖ±â2  ±è¿µ´ë 2003/03/07 13825 1611
  [½Ã½ºÅÛ] driveÀÇ ÀϷùøÈ£ ¹Ù²Ù±â  ±è¿µ´ë 2003/03/07 7047 1683
420   [½Ã½ºÅÛ] CPUÀÇ »ç¿ë·ü ±¸ÇÏ±â  ±è¿µ´ë 2003/03/07 5470 3382
419   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] ¼ýÀÚÀÇ ±Ù»çÄ¡ ±¸ÇÏ±â  ±è¿µ´ë 2003/03/07 4625 1246
418   [À©µµ¿ìÁî API] How to flush key buffer  ±è¿µ´ë 2003/03/07 5034 1335
417   [COM/OLE] À©µµ¿ìÁî ½ÃÀÛÀÇ "½ÇÇà" È­¸é ¶ç¿ì±â  ±è¿µ´ë 2003/03/07 4413 1236
416   [À©µµ¿ìÁî API] ÀÛ¾÷°ü¸®ÀÚÀÇ task switching ±ÝÁö½ÃÅ°±â  ±è¿µ´ë 2003/03/07 5177 1343
415   [³×Æ®¿÷/ÀÎÅͳÝ] ÀÎÅͳݿ¡ LAN ¶Ç´Â ModemÀ¸·Î Á¢¼ÓÁßÀÎÁö °Ë»ç  ±è¿µ´ë 2003/03/07 5565 1536
414   [À©µµ¿ìÁî API] Window Handle ·Î ½ÇÇàÆÄÀÏ¸í ±¸ÇÏ±â  ±è¿µ´ë 2003/03/07 5365 1353
413   [³×Æ®¿÷/ÀÎÅͳÝ] Getting Novell Netware Login NAME  ±è¿µ´ë 2003/03/07 4088 1110
412   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] ListBoxÀÇ È­¸é¿¡ º¸¿©Áö´Â ÃÖ»óÀ§ Item ¹øÈ£  ±è¿µ´ë 2003/03/07 4769 1272

[ÀÌÀü 10°³] [1]..[11][12][13] 14 [15][16][17][18][19][20]..[25] [´ÙÀ½ 10°³]
 

Copyright 1999-2024 Zeroboard / skin by zero