1. delphi 獲取硬碟外殼ID號
function Tform1.GetIdeSerialNumber: pchar; //獲取硬碟的出廠系列號;
const IDENTIFY_BUFFER_SIZE = 512;
type
TIDERegs = packed record
bFeaturesReg: BYTE;
bSectorCountReg: BYTE;
bSectorNumberReg: BYTE;
bCylLowReg: BYTE;
bCylHighReg: BYTE;
bDriveHeadReg: BYTE;
bCommandReg: BYTE;
bReserved: BYTE;
end;
TSendCmdInParams = packed record
cBufferSize: DWORD;
irDriveRegs: TIDERegs;
bDriveNumber: BYTE;
bReserved: array[0..2] of Byte;
dwReserved: array[0..3] of DWORD;
bBuffer: array[0..0] of Byte;
end;
TIdSector = packed record
wGenConfig: Word;
wNumCyls: Word;
wReserved: Word;
wNumHeads: Word;
wBytesPerTrack: Word;
wBytesPerSector: Word;
wSectorsPerTrack: Word;
wVendorUnique: array[0..2] of Word;
sSerialNumber: array[0..19] of CHAR;
wBufferType: Word;
wBufferSize: Word;
wECCSize: Word;
sFirmwareRev: array[0..7] of Char;
sModelNumber: array[0..39] of Char;
wMoreVendorUnique: Word;
wDoubleWordIO: Word;
wCapabilities: Word;
wReserved1: Word;
wPIOTiming: Word;
wDMATiming: Word;
wBS: Word;
wNumCurrentCyls: Word;
wNumCurrentHeads: Word;
wNumCurrentSectorsPerTrack: Word;
ulCurrentSectorCapacity: DWORD;
wMultSectorStuff: Word;
ulTotalAddressableSectors: DWORD;
wSingleWordDMA: Word;
wMultiWordDMA: Word;
bReserved: array[0..127] of BYTE;
end;
PIdSector = ^TIdSector;
TDriverStatus = packed record
bDriverError: Byte;
bIDEStatus: Byte;
bReserved: array[0..1] of Byte;
dwReserved: array[0..1] of DWORD;
end;
TSendCmdOutParams = packed record
cBufferSize: DWORD;
DriverStatus: TDriverStatus;
bBuffer: array[0..0] of BYTE;
end;
var
hDevice: Thandle;
cbBytesReturned: DWORD;
SCIP: TSendCmdInParams;
aIdOutCmd: array[0..(SizeOf(TSendCmdOutParams) + IDENTIFY_BUFFER_SIZE-1)-1] of Byte;
IdOutCmd: TSendCmdOutParams absolute aIdOutCmd;
procere ChangeByteOrder(var Data; Size: Integer);//函數中的過程
var
ptr: Pchar;
i: Integer;
c: Char;
begin
ptr := @Data;
for I := 0 to (Size shr 1) - 1 do begin
c := ptr^;
ptr^ := (ptr + 1)^;
(ptr + 1)^ := c;
Inc(ptr, 2);
end;
end;
begin //函數主體
Result := '';
if SysUtils.Win32Platform = VER_PLATFORM_WIN32_NT then
begin // Windows NT, Windows 2000
hDevice := CreateFile('\\.\PhysicalDrive0', GENERIC_READ or GENERIC_WRITE,
FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING, 0, 0);
end
else // Version Windows 95 OSR2, Windows 98
hDevice := CreateFile('\\.\SMARTVSD', 0, 0, nil, Create_NEW, 0, 0);
if hDevice = INVALID_HANDLE_VALUE then Exit;
try
FillChar(SCIP, SizeOf(TSendCmdInParams) - 1, #0);
FillChar(aIdOutCmd, SizeOf(aIdOutCmd), #0);
cbBytesReturned := 0;
with SCIP do
begin
cBufferSize := IDENTIFY_BUFFER_SIZE;
with irDriveRegs do
begin
bSectorCountReg := 1;
bSectorNumberReg := 1;
bDriveHeadReg := $A0;
bCommandReg := $EC;
end;
end;
if not DeviceIoControl(hDevice, $0007C088, @SCIP, SizeOf(TSendCmdInParams) - 1,@aIdOutCmd, SizeOf(aIdOutCmd), cbBytesReturned, nil) then Exit;
finally
CloseHandle(hDevice);
end;
with PIdSector(@IdOutCmd.bBuffer)^ do
begin
ChangeByteOrder(sSerialNumber, SizeOf(sSerialNumber));
(Pchar(@sSerialNumber) + SizeOf(sSerialNumber))^:= #0;
Result := Pchar(@sSerialNumber);
end;
end;
注意: vista 和win7下無效
2. delphi編寫一個外殼程序,殼裡面能調用網頁
procere TForm1.btn1Click(Sender: TObject);
begin
ShellExecute(Handle,'open','網址',
nil,nil,SW_SHOWNORMAL);
end;
3. 如何製作delphi的打包程序
通常, 在 delphi 中建立一個工程文件(*.dpr;*.dproj),點擊工具條上的 Run 圖標就會自動將源代碼編譯成 exe 文件:
其中,exe 文件生成的路徑,在 Project 菜單下的 Option 中進行設定:
如果生成的 exe 文件需要進行正式打包發布,根據軟體的特點可以採用不同的方式:
1、僅需要生成的 exe 文件,不需要其他文件的支持
對於這種類型的軟體,通常是比較小的工具類軟體,則可以直接將生成的 Exe 文件發布即可。
2、軟體的運行還需要其他文件支持
一些稍大些的軟體可能就需要其他的支持,比如:資料庫、驅動程序等等。這時可以採用專門的軟體安裝製作工具,將所有需要的文件(包括 exe 和其他文件)進行二次打包。
此類軟體安裝製作工具較多,常用的有 Windows Intaller、 InstallShield、Setup Factory 等等。
如 Setup Factory 的製作向導:
4. Borland Delphi DLL是什麼殼
用PEID查看的時候如果程序沒有加殼,那麼顯示的是該程序是用什麼編譯器編譯的,由你描述的可以看出來,你所查看的程序是用Borland Delphi 6.0 - 7.0編寫和編譯的. Borland Delphi 為一種編程語言和工具,其語言為OBJECT PASCAL,現已改為DELPHI語言
5. delphi調用外部程序~~~~~~~~~~~~
你的NC.exe在哪個路徑,補上去
ShellExecute(0,"open","nc.exe -w 2 192.168.0.1 80<2.txt",0,0,SW_SHOW );
6. PEid查殼,顯示Borland Delphi 6.0 - 7.0,請問這個殼怎麼去啊
Borland Delphi 6.0 - 7.0不是殼,是一種編程語言。這是告訴你,該程序使用Delphi編寫的。
Delphi程序沒有辦法還原到C++代碼,這兩者不是一種語言!
你只能想辦法將它還原到Delphi代碼(不過,目前還沒有什麼好的工具)。
7. Borland Delphi 2.0 這個是殼嗎
Borland Delphi 2.0 不是殼,是一門編程語言,到這里殼就算沒有了, 如果你還未找到數據說明是在寫程序的時候就加密過的
8. delphi 如何激活外部程序
我在一個應用程序中要頻繁調用了另一個應用程序(X.exe),只有第一次調用時,X.exe能彈出,以後調用時就不能彈出了. 查看更多答案>>
採納哦
9. Borland Delphi 6.0 - 7.0是殼嗎
Borland Delphi 是一種編程語言,它的前身就是PASCAL語言,如果你在做逆向工程,這說明軟體沒有加殼,並且我極力建議你用DeDe來反匯編Delphi的代碼,極其方便,可以直接看到每一個過程和函數的匯編代碼。
10. Borland Delphi 6.0 - 7.0編寫好的程序進行脫殼
這是Delphi編程的程序,程序可能隱藏了內部字元串,不能簡單的用漢化程序漢化,需要用反編譯程序找到內部字元串來修改