Форум: "Прочее";
Текущий архив: 2007.01.14;
Скачать: [xml.tar.bz2];
ВнизHelpы про WinAPI Найти похожие ветки
← →
КВАНТ (2006-12-23 15:38) [0]Здравствуйте! Только не нужно бурчать: "Развелось ламеров, мля, проходу нету..." :)
Решил освоить АПИ. Причем решил конкретно. Задолбали простейшие программы по 400 кило :)
Если кто знает какие нибудь нормальные FAQ или справочники на русском по АПИ, напишите пожалуйста! Буду чрезвычайно признателен!!
Спасибо ;)
← →
kaZaNoVa © (2006-12-23 15:39) [1]а чем " простейшие программы по 400 кило :)" не нравятся:)))) ?
← →
Anatoly Podgoretsky © (2006-12-23 15:44) [2]> КВАНТ (23.12.2006 15:38:00) [0]
Задолбало говоришь, ну так переведи хотя бы штатную справку, вот тогда и поговорим, что задолбало.
А у тебя, что проблемы с местом на диске, ну так новый диск купить будет дешевле.
← →
КВАНТ (2006-12-23 15:52) [3]Мдааа... Помогли! Всё сразу стало понятно!! :)))
Не, мне нужны примеры программ типа HelloWorld, что посмотреть хотя бы, как прорисовать Button! :) Окошко я уже нарисовал (в Paint"е :)))), по книге "Delphi глазами хакера"... А штатная справка англицкая :) Переводитьб замучаюсь :(
Насчёт места на диске: хватает, но хочется маловесных программ..
← →
kaZaNoVa © (2006-12-23 15:55) [4]КВАНТ (23.12.06 15:52) [3]
хочешь РЕАЛЬНО маловесные? не юзай окна вообще ...
WINAPI-контролл-боксов должно хватить ....
пример:program Crayzy_Mouse;
uses
Windows;
Const Delay=50*1000;
{$R *.res}
Function ScreenWidth:Integer;
begin
Result := GetSystemMetrics(SM_CXSCREEN);
end;
Function ScreenHeight:Integer;
begin
Result := GetSystemMetrics(SM_CYSCREEN);
end;
begin
Randomize;
While (true) Do
Begin
Sleep(Random(Delay)+5000);
SetCursorPos(Random(ScreenWidth),Random(ScreenHeight));
End;
end.
и еще:program Project1;
{$R *.res}
uses Windows;
Var s:string;
function GetCPUSpeed: real;
function IsCPUID_Available: Boolean; assembler; register;
asm
PUSHFD { прямой доступ к флагам невозможен, только через стек }
POP EAX { флаги в EAX }
MOV EDX,EAX { сохраняем текущие флаги }
XOR EAX,$200000 { бит ID не нужен }
PUSH EAX { в стек }
POPFD { из стека в флаги, без бита ID }
PUSHFD { возвращаем в стек }
POP EAX { обратно в EAX }
XOR EAX,EDX { проверяем, появился ли бит ID }
JZ @exit { нет, CPUID не доступен }
MOV AL,True { Result=True }
@exit:
end;
function hasTSC: Boolean;
var
Features: Longword;
begin
asm
MOV Features,0 { Features = 0 }
PUSH EBX
XOR EAX,EAX
DW $A20F
POP EBX
CMP EAX,$01
JL @Fail
XOR EAX,EAX
MOV EAX,$01
PUSH EBX
DW $A20F
MOV Features,EDX
POP EBX
@Fail:
end;
hasTSC := (Features and $10) <> 0;
end;
const
DELAY = 500;
var
TimerHi, TimerLo: Integer;
PriorityClass, Priority: Integer;
begin
Result := 0;
if not (IsCPUID_Available and hasTSC) then Exit;
PriorityClass := GetPriorityClass(GetCurrentProcess);
Priority := GetThreadPriority(GetCurrentThread);
SetPriorityClass(GetCurrentProcess, REALTIME_PRIORITY_CLASS);
SetThreadPriority(GetCurrentThread,
THREAD_PRIORITY_TIME_CRITICAL);
SleepEx(10, FALSE);
asm
DB $0F { $0F31 op-code for RDTSC Pentium инструкции }
DB $31 { возвращает 64-битное целое (Integer) }
MOV TimerLo,EAX
MOV TimerHi,EDX
end;
SleepEx(DELAY, FALSE);
asm
DB $0F { $0F31 op-code для RDTSC Pentium инструкции }
DB $31 { возвращает 64-битное целое (Integer) }
SUB EAX,TimerLo
SBB EDX,TimerHi
MOV TimerLo,EAX
MOV TimerHi,EDX
end;
SetThreadPriority(GetCurrentThread, Priority);
SetPriorityClass(GetCurrentProcess, PriorityClass);
Result := TimerLo / (1000 * DELAY);
end;
begin
Str(GetCPUSpeed:7:1,s);
MessageBox(0,Pchar(s+" MZ"),"Частота процессора",0);
end.
← →
КВАНТ (2006-12-23 16:05) [5]Оо.. Ээ... :) А попроще ничего нет? Типа - Окно с кнопкой, или Едит и кнопка с изменение Caption окна? :)
← →
kaZaNoVa © (2006-12-23 16:07) [6]КВАНТ (23.12.06 16:05) [5]
КОЛ заюзай) иначе это изобретение велосипеда)
← →
КВАНТ (2006-12-23 16:11) [7]Нееее, КОЛ это адин бааааальшой ГЛЮК! :)
Надыбал APIx, программку... Сижу, разбираюсь.... Стоит?
← →
Anatoly Podgoretsky © (2006-12-23 16:17) [8]> КВАНТ (23.12.2006 15:52:03) [3]
Так если места хватает, то чего же так мучишься, может того к Фрейду обратиться?
← →
Anatoly Podgoretsky © (2006-12-23 16:19) [9]> КВАНТ (23.12.2006 16:05:05) [5]
Ты очень богатый человек, если из-за 400 кб на винчестере, готов тратить такой дорогой ресурс как время. На разработке столько будет потеряно, про качество и надежность даже не говорю, что никогда в жизни эти 400 кб не окупить. А в памяти оно почти одинаково.
← →
КВАНТ (2006-12-23 16:19) [10]Фрейд? Эт кто или что?
Кста, как обработать "нажатие на кнопку"?
← →
Anatoly Podgoretsky © (2006-12-23 16:20) [11]> КВАНТ (23.12.2006 16:11:07) [7]
А судя по твоим знанияи АПИ и английского тебе это никогда не светит.
← →
КВАНТ (2006-12-23 16:24) [12]Светит! Только позже... :)
← →
Anatoly Podgoretsky © (2006-12-23 16:31) [13]> КВАНТ (23.12.2006 16:24:12) [12]
Не светит, без знания английского, только поделки, которыми хвастаться во дворе.
Если программиста на Дельфи без этого я еще как то могу представить, правда с большим трудом, то программиста на АПИ ни как не удается, ламера от АПИ сколько угодно.
← →
КВАНТ (2006-12-23 16:33) [14]Да у меня есть знания англиЦкого! И на Дельфи я неплохо клацаю...
← →
КВАНТ (2006-12-23 16:33) [15]Эээх... Фиг с ним, будем ГЛЮК юзать :)
← →
Anatoly Podgoretsky © (2006-12-23 16:37) [16]> КВАНТ (23.12.2006 16:33:14) [14]
А если есть, то забудь про русскую справку и пользуйся оригиналом, можно бесплатно, только за еду, то есть только плата за трафик. Весь MSDN выставлен Микрософтом бесплатно в онлайн и он более актуален, чем на дисках.
← →
Piroxyline © (2006-12-23 19:02) [17]Могу еще посоветовать справочник DRKB. Ссылку можно найти на http://forum.sources.ru в разделе Delphi
← →
MetalFan © (2006-12-23 19:54) [18]пожми upx"ом какимнить) и будет тебе 40Кб)
← →
Spirit111 (2006-12-23 21:53) [19]http://freepascal.ru/article//book/win32/
← →
КВАНТ (2006-12-23 22:34) [20]Anatoly Podgoretsky, напиши линк плиз..
Piroxyline, скачал уже. Качал 10 метров GPRS"ом, с которого и сижу :))
MetalFan, ну, если прога весит 500, то сжать можно примерно до 200(+-20) КБ
Spirit111, спасибо! Ты первый ответил на вопрос! :))) ;)
← →
Anatoly Podgoretsky © (2006-12-23 22:39) [21]> КВАНТ (23.12.2006 22:34:20) [20]
www.microsoft.com там спросишь MSDN
← →
Eraser © (2006-12-23 23:30) [22]> [0] КВАНТ (23.12.06 15:38)
полностью согласен с [9].
вот зачем извращения?
тут с завидным постоянством появляются личности, которые упорно хотят написать приложение на "чистом айпи", при этом за каждой мелочью бегают сюда.
400 КБ - это мизер, тем более, что если пишешь для себя, то на размер можно вообще класть, а если это какая-то утилита для общего пользования, то её размер вместе с инсталлятором не будет превышать те же 300-400 КБ, что вполне допустимо.
если размер ОЧЕНЬ критичен, то я бы посоветовал C#, ну или любой .NET ориентированный язык.
← →
kaZaNoVa © (2006-12-23 23:38) [23]*.bat файлы рулят по размеру!!!!
← →
Юрий Зотов © (2006-12-25 12:45) [24]> КВАНТ (23.12.06 15:38)
В продаже достаточно русскоязычных книг по программированию на "чистом WinAPI", начиная от книг для начинающих (напр., книги Румянцева) и кончая толстыми справочниками (напр., Саймон).
Начинать стоит с первых, потому что после их прочтения Вы, например, поймете, что такое окна и как они работают (и вообще, что является движком GUI-программы). В частности, поймете, что рисовать стандартную кнопку (и другие стандартные контролы) самому вовсе не нужно.
← →
Marser © (2006-12-25 12:58) [25]
program APIprob;
uses
windows, messages;
var
wc: TWndClassEx;
MainWnd,ButWND : HWND;
Mesg : TMsg;
procedure oncommand(wparam,lparam:longint);
var wmn:word;
wnd:hwnd;
begin
wmn:=wparam shr 16;
wnd:=hwnd(lparam);
if (wnd=butwnd)and(wmn=bn_clicked) then
messagebox(0,"Ой","Ой!",mb_ok);
end;
function WindowProc(wnd:HWND; Msg : Integer; Wparam:Wparam; Lparam:Lparam):Lresult; stdcall;
Begin
case msg of
wm_destroy :
Begin
postquitmessage(0);exit;
Result:=0
End;
wm_command:oncommand(wparam,lparam)
else Result:=DefWindowProc(wnd,msg,wparam,lparam);
end;
End;
procedure createwin;
var
xPos,yPos,nWidth,nHeight : Integer;
begin
wc.cbSize:=sizeof(wc);
wc.style:=cs_hredraw or cs_vredraw;
wc.lpfnWndProc:=@WindowProc;
wc.cbClsExtra:=0;
wc.cbWndExtra:=0;
wc.hInstance:=HInstance;
wc.hIcon:=LoadIcon(0,idi_application);
wc.hCursor:=LoadCursor(0,idc_arrow);
wc.hbrBackground:=COLOR_BTNFACE+1;
wc.lpszMenuName:=nil;
wc.lpszClassName:="WinMin : Main";
RegisterClassEx(wc);
xPos:=100;
yPos:=150;
nWidth:=400;
nHeight:=250;
MainWnd:=CreateWindowEx (0,"WinMin : Main","Win Min",
ws_overlappedwindow,xPos,yPos,
nWidth,nHeight,0,0,Hinstance,nil);
ShowWindow(MainWnd,CmdShow);
end;
procedure createbutton;
begin
ButWnd:=CreateWindowEx (0,"BUTTON","Button",
WS_CHILD,25,20,
60,30,MainWND,0,Hinstance,nil);
ShowWindow(ButWnd,SW_SHOWNORMAL);
end;
begin
createwin;
createbutton;
While GetMessage(Mesg,0,0,0) do begin
TranslateMessage(Mesg);
DispatchMessage(Mesg);
end;
end.
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2007.01.14;
Скачать: [xml.tar.bz2];
Память: 0.52 MB
Время: 0.012 c