论坛上的我已经查看了
他们方法,,我差多试过了,,
2000下没有问题,,可是98下,,老是读不出
高手能能帮我试一下
他们方法,,我差多试过了,,
2000下没有问题,,可是98下,,老是读不出
高手能能帮我试一下
解决方案 »
- Record释放的问题!!!
- insert与update的使用
- 关于Excel的工作表复制问题:一个workbook中只有一个工作表a.....
- 新手碰到书上的例程序无法执行,关于集合类型的。向大家请教
- 请问fastreport如何画斜线啊?急哦
- 现有一项目,找合作开发,如果你是项目开发高手,有丰富项目开发经验的清进来看看,谢绝应届!(限杭州)
- 关于控件组的问题,高手请进来看看
- DELPHI怎么样能够调用DOS的内部命令?
- WIN98程序升至WIN2000后为啥老是弹出CPU窗口呢?急!
- bde连SQLSERVER,利用数据库用户为软件登陆用户?
- 100分求答案!我电脑有些扫描仪扫描出来的图像,现在我想知道这些图像当时以多少分辨率扫描?
- 图片压缩算法
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;type
TDiskIO=packed Record
dwStartSector:longint;
wSectors :smallint;
lpBuffer :pchar;
end;
P32Regs = ^T32Regs; //32位寄存器结构
T32Regs = record
EBX: Longint;
EDX: Longint;
ECX: Longint;
EAX: Longint;
EDI: Longint;
ESI: Longint;
Flags: Longint;
end;
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end; const
FILE_FLAG_DELETE_ON_CLOSE=$04000000;
VWIN32_DIOC_DOS_IOCTL = 1; { MS-DOS Int 21h 44xxh functions call }
VWIN32_DIOC_DOS_INT25 = 2; { MS-DOS Int 25h function call }
VWIN32_DIOC_DOS_INT26 = 3; { MS-DOS Int 26h function call }
VWIN32_DIOC_DOS_INT13 = 4; { MS-DOS Int 13h functions call }
VWIN32_DIOC_DOS_DRIVEINFO = 6; {MS-DOS Int 21h function 730X}
var
Form1: TForm1;
buffer:TDiskio;
hDeviceHandle:THandle;
reg:T32Regs;implementation{$R *.DFM}
function LockDisk(VMM32Handle:cardinal;disk:byte;LockOrNot:boolean):boolean;
var
R: T32Regs;
cb: DWord;
begin
if (VMM32Handle=INVALID_HANDLE_VALUE)then
begin
result:=false;
exit;
end;
fillchar(r, sizeof(r), 0);
if LockOrNot=true then
begin
R.ECX := $084b;
R.EBX := $100+disk; //bh:0-3级 0,1,$80,$81...
R.EDX := 1; //1允许写,0允许格式化
end
else begin
R.ECX := $086b;
R.EBX := disk; //0,1,$80,$81...
end;
R.EAX := $440D;
DeviceiOControl(VMM32Handle, VWIN32_DIOC_DOS_IOCTL, @R, SizeOf(R), @R, SizeOf(R), cb, nil);
Result := (R.Flags and 1 = 0);
end;function LockDrive(VMM32Handle:cardinal;drive:byte;LockOrNot:boolean):boolean;
var
R: T32Regs;
cb: DWord;
begin
if (VMM32Handle=INVALID_HANDLE_VALUE)then
begin
result:=false;
exit;
end;
fillchar(r, sizeof(r), 0);
if LockOrNot=true then
begin
R.ECX := $084a;
R.EBX := $100+drive; //bh:0-4级 0当前盘,1:A,2:B,3:C
R.EDX := 1; //1允许写,0允许格式化
end
else begin
R.ECX := $086A;
R.EBX := drive; //0当前盘,1:A,2:B,3:C
end;
R.EAX := $440D;
DeviceiOControl(VMM32Handle, VWIN32_DIOC_DOS_IOCTL, @R, SizeOf(R), @R, SizeOf(R), cb, nil);
Result := (R.Flags and 1 = 0); //and (R.EAX and $FFFF = 0);
end;procedure TForm1.Button1Click(Sender: TObject);
const
drive=3; //c盘
var
cb:DWORD;
str:string;
i:integer;
boot:array[0..512-1]of byte;
begin
hDeviceHandle:=CreateFile('\\.\VWIN32',0,0, nil,0, FILE_FLAG_DELETE_ON_CLOSE, 0);
if(hDeviceHandle<>INVALID_HANDLE_VALUE) then
begin
buffer.dwStartSector:=0;
buffer.wSectors:=1;
buffer.lpBuffer:=@boot;
reg.EAX:=$7305;
reg.EBX:=Integer(@buffer);
reg.ECX:=-1;
reg.EDX:=drive;//1-A 2-b 3-c
reg.ESI:=0;//读
reg.Flags:=0;
DeviceIoControl(hDeviceHandle,VWIN32_DIOC_DOS_DRIVEINFO,@reg,sizeof(reg),@reg,sizeof(reg),cb,nil);
if ((reg.Flags and 1)=1) then
raise exception.createfmt('错误代码:%.2x',[reg.EAX and $FFFF]);
end;
str:='';
for i:=0 to buffer.wSectors*512-1 do
begin
str:=str+format('%.2x',[integer(boot[i])]);
if i mod 16=15 then str:=str+#13;
end;
showmessage(str);
LockDrive(hDeviceHandle,drive,true);
if(hDeviceHandle<>INVALID_HANDLE_VALUE) then
begin
buffer.dwStartSector:=0;
buffer.wSectors:=1;
buffer.lpBuffer:=@boot;
reg.EAX:=$7305;
reg.EBX:=Integer(@buffer);
reg.ECX:=-1;
reg.EDX:=drive;//1-A 2-b 3-c
reg.ESI:=1;//写
reg.Flags:=0;
DeviceIoControl(hDeviceHandle,VWIN32_DIOC_DOS_DRIVEINFO,@reg,sizeof(reg),@reg,sizeof(reg),cb,nil);
if ((reg.Flags and 1)=1) then
raise exception.createfmt('错误代码:%.2x',[reg.EAX and $FFFF]);
end;
LockDrive(hDeviceHandle,drive,false);
end;
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;type
TDiskIO=packed Record
dwStartSector:longint;
wSectors :smallint;
lpBuffer :pchar;
end;
P32Regs = ^T32Regs; //32位寄存器结构
T32Regs = record
EBX: Longint;
EDX: Longint;
ECX: Longint;
EAX: Longint;
EDI: Longint;
ESI: Longint;
Flags: Longint;
end;
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end; const
FILE_FLAG_DELETE_ON_CLOSE=$04000000;
VWIN32_DIOC_DOS_IOCTL = 1; { MS-DOS Int 21h 44xxh functions call }
VWIN32_DIOC_DOS_INT25 = 2; { MS-DOS Int 25h function call }
VWIN32_DIOC_DOS_INT26 = 3; { MS-DOS Int 26h function call }
VWIN32_DIOC_DOS_INT13 = 4; { MS-DOS Int 13h functions call }
VWIN32_DIOC_DOS_DRIVEINFO = 6; {MS-DOS Int 21h function 730X}
var
Form1: TForm1;
buffer:TDiskio;
hDeviceHandle:THandle;
reg:T32Regs;implementation{$R *.DFM}
function LockDisk(VMM32Handle:cardinal;disk:byte;LockOrNot:boolean):boolean;
var
R: T32Regs;
cb: DWord;
begin
if (VMM32Handle=INVALID_HANDLE_VALUE)then
begin
result:=false;
exit;
end;
fillchar(r, sizeof(r), 0);
if LockOrNot=true then
begin
R.ECX := $084b;
R.EBX := $100+disk; //bh:0-3级 0,1,$80,$81...
R.EDX := 1; //1允许写,0允许格式化
end
else begin
R.ECX := $086b;
R.EBX := disk; //0,1,$80,$81...
end;
R.EAX := $440D;
DeviceiOControl(VMM32Handle, VWIN32_DIOC_DOS_IOCTL, @R, SizeOf(R), @R, SizeOf(R), cb, nil);
Result := (R.Flags and 1 = 0);
end;function LockDrive(VMM32Handle:cardinal;drive:byte;LockOrNot:boolean):boolean;
var
R: T32Regs;
cb: DWord;
begin
if (VMM32Handle=INVALID_HANDLE_VALUE)then
begin
result:=false;
exit;
end;
fillchar(r, sizeof(r), 0);
if LockOrNot=true then
begin
R.ECX := $084a;
R.EBX := $100+drive; //bh:0-4级 0当前盘,1:A,2:B,3:C
R.EDX := 1; //1允许写,0允许格式化
end
else begin
R.ECX := $086A;
R.EBX := drive; //0当前盘,1:A,2:B,3:C
end;
R.EAX := $440D;
DeviceiOControl(VMM32Handle, VWIN32_DIOC_DOS_IOCTL, @R, SizeOf(R), @R, SizeOf(R), cb, nil);
Result := (R.Flags and 1 = 0); //and (R.EAX and $FFFF = 0);
end;procedure TForm1.Button1Click(Sender: TObject);
const
drive=3; //c盘
var
cb:DWORD;
str:string;
i:integer;
boot:array[0..512-1]of byte;
begin
hDeviceHandle:=CreateFile('\\.\VWIN32',0,0, nil,0, FILE_FLAG_DELETE_ON_CLOSE, 0);
if(hDeviceHandle<>INVALID_HANDLE_VALUE) then
begin
buffer.dwStartSector:=0;
buffer.wSectors:=1;
buffer.lpBuffer:=@boot;
reg.EAX:=$7305;
reg.EBX:=Integer(@buffer);
reg.ECX:=-1;
reg.EDX:=drive;//1-A 2-b 3-c
reg.ESI:=0;//读
reg.Flags:=0;
DeviceIoControl(hDeviceHandle,VWIN32_DIOC_DOS_DRIVEINFO,@reg,sizeof(reg),@reg,sizeof(reg),cb,nil);
if ((reg.Flags and 1)=1) then
raise exception.createfmt('错误代码:%.2x',[reg.EAX and $FFFF]);
end;
str:='';
for i:=0 to buffer.wSectors*512-1 do
begin
str:=str+format('%.2x',[integer(boot[i])]);
if i mod 16=15 then str:=str+#13;
end;
showmessage(str);
LockDrive(hDeviceHandle,drive,true);
if(hDeviceHandle<>INVALID_HANDLE_VALUE) then
begin
buffer.dwStartSector:=0;
buffer.wSectors:=1;
buffer.lpBuffer:=@boot;
reg.EAX:=$7305;
reg.EBX:=Integer(@buffer);
reg.ECX:=-1;
reg.EDX:=drive;//1-A 2-b 3-c
reg.ESI:=1;//写
reg.Flags:=0;
DeviceIoControl(hDeviceHandle,VWIN32_DIOC_DOS_DRIVEINFO,@reg,sizeof(reg),@reg,sizeof(reg),cb,nil);
if ((reg.Flags and 1)=1) then
raise exception.createfmt('错误代码:%.2x',[reg.EAX and $FFFF]);
end;
LockDrive(hDeviceHandle,drive,false);
end;
0200000000F800003F00FF003F000000
FC8A3801FF4D00000000000002000000
01000600000000000000000000000000
800029051574324E4F204E414D452020
20204641543332202020FA33C98ED1BC
F87B8EC1BD7800C576001E561655BF22
05897E00894E02B10BFCF3A48ED9BD00
7CC645FE0F8B46188845F9384E407D25
8BC199BB0007E89700721A83EB3A66A1
1C7C663B078A57FC750680CA02885602
80C31073EDBF0200837E160075458B46
1C8B561EB903004940750142BB007EE8
5F007326B0F84F741D8B463233D2B903
003BC8771E8B760E3BCE73172BF10346
1C13561EEBD1730BEB27837E2A007703
E9FD02BE7E7DAC9803F0AC84C074173C
FF7409B40EBB0700CD10EBEEBE817DEB
E5BE7F7DEBE098CD165E1F668F04CD19
4156666A00525006536A016A108BF460
807E020E7504B442EB1D919233D2F776
1891F776184287CAF7761A8AF28AE8C0
CC020ACCB801028A5640CD13618D6410
5E720A40750142035E0B4975B4C30D0A
496E76616C69642073797374656D2064
69736B0D0A4469736B20492F4F206572
726F720D0A5265706C61636520746865
206469736B2C20616E64207468656E20
707265737320616E79206B65790D0A00
6B65790D0A000000494F202020202020
5359534D53444F532020205359537E01
0057494E424F4F5420535953000055AA大侠知道,,那些位是可能改写的