ÈóÌÐòÖ»ÔËÐÐÒ»¸öʵÀý(Delphiƪ)
Windows ÏÂÒ»¸öµäÐ͵ÄÌØÕ÷¾ÍÊǶàÈÎÎñ£¬ÎÒÃÇ¿ÉÒÔͬʱ´ò¿ª¶à¸ö´°¿Ú½øÐвÙ×÷£¬Ò²¿ÉÒÔͬʱÔËÐгÌÐòµÄ¶à¸öʵÀý£¬±ÈÈç¿ÉÒÔ´ò¿ªÐí¶à¸ö×ÊÔ´¹ÜÀíÆ÷½øÐÐÎļþµÄÒƶ¯¸´ÖƲÙ×÷¡£µ«ÓÐʱ³öÓÚijÖÖ¿¼ÂÇ£¨±ÈÈ簲ȫÐÔ£©£¬ÎÒÃÇÒª×ö³öһЩÏÞÖÆ£¬ÈóÌÐòÖ»Äܹ»ÔËÐÐÒ»¸öʵÀý¡£ÔÚDelphi±à³ÌÖУ¬±ÊÕß×ܽá³öÁËÒÔϼ¸ÖÖ·½·¨£º
¡¡¡¡Ò»¡¢ ²éÕÒ´°¿Ú·¨
¡¡¡¡ÕâÊÇ×îΪ¼òµ¥µÄÒ»ÖÖ·½·¨¡£ÔÚ³ÌÐòÔËÐÐÇ°ÓÃFindWindowº¯Êý²éÕÒ¾ßÓÐÏàͬ´°¿ÚÀàÃûºÍ±êÌâµÄ´°¿Ú£¬Èç¹ûÕÒµ½ÁË£¬¾Í˵Ã÷ÒѾ´æÔÚÒ»¸öʵÀý¡£ÔÚÏîÄ¿Ô´ÎļþµÄ³õʼ»¯²¿·ÖÌí¼ÓÒÔÏ´úÂ룺
Program OneApp
¡¡¡¡Uses
¡¡¡¡Forms,Windows;//£¨ÕâÀï½éÉܵļ¸ÖÖ·½·¨¾ùÐèÔÚÏîÄ¿Ô´ÎļþÖÐÌí¼ÓWindowsµ¥Ôª£¬ÒÔºó²»ÔÙÖظ´ÁË£©
¡¡¡¡Var Hwnd:Thandle;
¡¡¡¡Begin
¡¡¡¡ Hwnd:=FindWindow(‘TForm1’£¬‘SingleApp’);
¡¡¡¡ If Hwnd=0 then
¡¡¡¡ Begin
¡¡¡¡ Application.Initialize;
¡¡¡¡ Application.CreateForm(Tform1, Form1);
¡¡¡¡ Application.Run;
¡¡¡¡ End;
¡¡¡¡End;
FindWindow()º¯Êý´øÁ½¸ö²ÎÊý£¬ÆäÖеÄÒ»¸ö²ÎÊý¿ÉÒÔºöÂÔ£¬µ«±ÊÕßÇ¿ÁÒ½¨Ò齫Á½¸ö²ÎÊý¶¼ÓÃÉÏ£¬ÃâµÃ´ÕÇɱðµÄ³ÌÐòÒ²ÔÚʹÓÃÏàͬµÄÀàÃû£¬¾ÍµÃ²»µ½ÕýÈ·µÄ½á¹ûÁË¡£ÁíÍ⣬Èç¹ûÊÇÔÚDelphi IDE´°¿ÚÖÐÔËÐиóÌÐò£¬½«Ò»´Î¶¼²»ÄÜÔËÐУ¬ÒòΪÒѾ´æÔÚÏàͬÀàÃûºÍ±êÌâµÄ´°¿Ú£ºÉè¼ÆʱµÄ´°Ìå¡£
¡¡¡¡¶þ¡¢Ê¹Óû¥³â¶ÔÏó
¡¡¡¡Èç¹û¾õµÃ²éÕÒ´°¿ÚµÄ·½·¨Ð§Âʲ»Ì«¸ßµÄ»°£¬¿ÉÒÔʹÓô´½¨»¥³â¶ÔÏóµÄ·½·¨¡£¾¡¹Ü»¥³â¶ÔÏóͨ³£ÓÃÓÚͬ²½Á¬½Ó£¬µ«ÓÃÔÚÕâ¸öµØ·½Ò²ÊǷdz£·½±ãµÄ¡£½öÓÃÁË4¾ä´úÂë¾ÍÇáËɸ㶨¡£
VAR Mutex:THandle;
¡¡¡¡begin
¡¡¡¡ Mutex:=CreateMutex(NIL,True,‘SingleApp’);
¡¡¡¡ IF GetLastError<>ERROR_ALREADY_EXISTS THEN//Èç¹û²»´æÔÚÁíһʵÀý
¡¡¡¡ BEGIN
¡¡¡¡ Application.CreateHandle;
¡¡¡¡ Application.CreateForm (TExpNoteForm, ExpNoteForm);
¡¡¡¡ Application.Run;
¡¡¡¡ END;
¡¡¡¡ ReleaseMutex(Mutex);
¡¡¡¡end.
Èý¡¢È«¾ÖÔ×Ó·¨
¡¡¡¡ÎÒÃÇÒ²¿ÉÒÔÀûÓÃÏòϵͳÌí¼ÓÈ«¾ÖÔ×ӵķ½·¨£¬À´·ÀÖ¹¶à¸ö³ÌÐòʵÀýµÄÔËÐС£È«¾ÖÔ×ÓÓÉWindows ϵͳ¸ºÔðά³Ö£¬ËüÄܱ£Ö¤ÆäÖеÄÿ¸öÔ×Ó¶¼ÊÇΨһµÄ£¬¹ÜÀíÆäÒýÓüÆÊý£¬²¢ÇÒµ±¸ÃÈ«¾ÖÔ×ÓµÄÒýÓüÆÊýΪ0ʱ£¬´ÓÄÚ´æÖÐÇå³ý¡£ÎÒÃÇÓÃGlobalAddAtom º¯ÊýÏòÈ«¾ÖÔ×ÓÌí¼ÓÒ»¸ö255¸ö×Ö½ÚÒÔÄÚµÄ×Ö·û´®£¬ÓÃGlobalFindAtomÀ´¼ì²éÊÇ·ñÒѾ´æÔÚ¸ÃÈ«¾ÖÔ×Ó£¬×îºóÔÚ³ÌÐò½áÊøʱÓÃGlobalDeleteAtomº¯Êýɾ³ýÌí¼ÓµÄÈ«¾ÖÔ×Ó¡£Ê¾ÀýÈ
Ïà¹ØÎĵµ£º
×î½üÔÚµ÷ÊÔ´úÂë,·¢ÏÖÒ»¸öÎÊÌâ.Ó¦¸ÃËãÊÇbug°É. ºÇ,Èç¹û²»Ëãbug,ÄǾÍÊÇÎÒ¶ÔÆäʵÏÖÔÀíµÄÎó½â.
Èç¹û°Ñ·µ»Ø²ÎÊýResult×÷ΪÁíÒ»º¯ÊýµÄÊäÈë²ÎÊý,resultµÄ³õÖµÊDz»È·¶¨...
function fun(str:string):string;
begin
fun2(result);
end; ......
Îҵİ취£¬Ôö¼ÓÒ»¸ötimer ÉèÖüä¸ô100ms£¬Í¨¹ýtimerµÄʹÄÜ·ñ£¬¿ØÖƱ¨¾¯ÉùÒô¿ª¹Ø
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Windows.Beep(1200+i_f,10+i_f);
if i_f<2000 then
begin
inc(i_f);
end
end;
== ......
ÔÚÍøÉÏ¿´µ½ºÜ¶àÈ˶¼ÔÚΪDelphiÊÇ·ñÖ§³ÖC++/JavaÖеľ²Ì¬±äÁ¿¼°¾²Ì¬·½·¨µÄ¹¦ÄܶøÀ§ÈÅ,ÆäʵÕâÔÚDelphiÖÐÊǺܼòµ¥µÄ.
¾²Ì¬·½·¨¾ÍÊÇʹÓÃClass Function. ¾²Ì¬±äÁ¿ÔòʹÓõ¥Ôª¾Ö²¿±äÁ¿À´ÊµÏÖ. ´úÂëÈçÏÂ:
//=========================================
// StaticVarTestU - ¶¨ÒåÁË¿ÉÒÔ¼ÆÊýµÄÀ࣬ͨ¹ýÀà·½·¨¼´¿É·ÃÎÊ´ËÀàµÄ¶ÔÏóÊý ......
Delphi ÖÐ FindWindow ºÍ FindWindowEx µÄÓï·¨ºÍÓ÷¨
FindWindow(
lpClassName, {´°¿ÚµÄÀàÃû}
lpWindowName: PChar {´°¿ÚµÄ±êÌâ}
): HWND; {·µ»Ø´°¿ÚµÄ¾ä±ú; ʧ°Ü·µ»Ø 0}
//FindWin ......