Belgeler menüsüne bir dosya eklemeBelgeler menüsünü temizlemeDuvar kağıdını değiştirmekBaşlat butonunu gizlemek veya kullanılmaz hale getirmekBir programın çalıştırılmasıHarddiskin seri numarasının bulunmasıWindows ve System klasrlerinin bulunmasıWindows lisans bilgilerinin bulunmasıSpeakerdan Beep sesi çıkartmaBir Denetim Masası uygulamasını çalıştırmakWindows'u kapatmak veya yeniden başlatmak Ekran koruyucusunu kapatmak ve açmakEkran kartım kaç rengi destekliyorWindows Gezginini istediğiniz bir klasrle açmaWindows'un Bul diyalog penceresini istediğiniz bir klasrle açmaPencerenin kapatma düğmesini etkisiz hale getirmeUygulamam Windows her açıldığında otomatik çalışsınKlasre Gzat diyalogunu kullanarak bir klasrü seçmeBir web adresini açmaBir DOS programını çalıştırma ve çalışması bitince penceresini kapatmaAlt + Tab ve Ctrl + Esc tuşlarının kullanılmaz hale getirilmesiBir menü ğesine resim eklemeAğ ortamında makinenin ismini bulmaAğ ortamında login olmuş kullanıcı ismini bulmaEkran çzünürlüğünü nasıl ğrenirimTaskbar'ın AutoHide zelliği açık mı, kapalı mı?Programım biraz beklesinCaps lock tuşu açık mı, kapalı mı?İmleci gizleyip, tekrar gstermeEkran grüntüsünü alınMap Network Drive diyalogunu açmaBir dosyayı bağlantılı olduğu uygulama ile açmaTemp klasrünü bulmaEkran koruyucuyu çalıştırmakGüç koruma modunda çalışan monitrü kapatıp açmaWindows Tarih/Saat zellikleri iletişim kutusunu açmaWindows'ta yüklü bulunan yazıcıları listelemeProgramımın Windows NT'de çalıştığını nasıl tespit ederimWindows oturumunu kapatma CPU tipini nasıl tespit ederimBir klasrdeki tüm dosyaları silmeWindows NT/2000/XP'yi Kapatmak. wav dosyalarını çaldırmakProgramımın simgesi Tray'de gzüksünProgramım Windows 2000/Xp'de düzgün çalışıyor, Win9x'te TComboBox bileşeninde xxx. Items. String EReadError veriyorBaşka bir uygulamayı kapatmakCD'nin takılıp çıkarıldığından haberdar olmaSürücü tipini belirlemekBir fontu Windows'a kurmadan uygulamanızda kullanmaBir Klasrdeki Dosyaları Başka Bir Klasre KopyalamaWindows'un zel Klasrlerini AçmaBelgeler menüsüne bir dosya eklemeuses kısmına ShlOBJ unitini ekleyin; procedure TForm1. Button1Click ;vars : string;begins := 'C:\DownLoad\deneme.html';SHAddToRecentDocs(SHARD_PATH, pChar ;end;Belgeler menüsünü temizlemeuses kısmına ShlOBJ unitini ekleyin; SHAddToRecentDocs ;Duvar kağıdını değiştirmekvars: string;begins := 'c:\windows\cars. bmp';SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, PChar ,0);Başlat butonunu gizlemek veya kullanılmaz hale getirmekprocedure TForm1. Button1Click ;varRgn : hRgn;begin// Başlat butonunu gizleRgn := CreateRectRgn(0, 0, 0, 0);SetWindowRgn(FindWindowEx(FindWindow ,0,'Button', nil), Rgn, true);end;procedure TForm1. Button2Click ;begin//Gizlenen Başlat butonunu eski haline dndürmek içinSetWindowRgn(FindWindowEx(FindWindow ,0,'Button', nil),0, true);end;procedure TForm1. Button3Click ;begin//Başlat butonunu kullanılmaz yapEnableWindow(FindWindowEx(FindWindow ,0,'Button', nil), false);end;procedure TForm1. Button4Click ;begin//Kullanılmaz yapılan Başlat butonunu eski haline getirmek içinEnableWindow(FindWindowEx(FindWindow ,0,'Button', nil), true);end;Bir programın çalıştırılmasıWinExec ; WinExec ; WinExec ; WinExec ;Harddiskin seri numarasının bulunmasıprocedure TForm1. Button1Click ;varVolumeSerialNumber : DWORD;MaximumComponentLength : DWORD;FileSystemFlags : DWORD;SerialNumber : string;beginGetVolumeInformation('C:\', nil,0,@VolumeSerialNumber, MaximumComponentLength, FileSystemFlags, nil,0);SerialNumber := IntToHex(HiWord , 4) + '-' +IntToHex(LoWord , 4);Memo1. Lines. Add ;end;Windows ve System klasrlerinin bulunmasıprocedure TForm1. Button1Click ;vara : Array of char;beginGetWindowsDirectory(a, sizeof ;ShowMessage(StrPas ;GetSystemDirectory(a, sizeof ;ShowMessage(StrPas ;end;Windows lisans bilgilerinin bulunmasıuses kısmına Registry unitini ekleyin; procedure TForm1. Button1Click ;varreg: TRegIniFile;beginreg := TRegIniFile. create('SOFTWARE\MICROSOFT\MS SETUP \');Memo1. Lines. Add(reg. ReadString ;Memo1. Lines. Add(reg. ReadString ;reg. free;end;Speakerdan Beep sesi çıkartmaMessageBeep(word(-1));Bir Denetim Masası uygulamasını çalıştırmakControl Panel uygulamaları Windows\System klasrü altında bulunur. . CPL uzantılı dosyalardır. Bu uygulamaları Control. Exe programı ile çalıştırabilirsiniz. Bazı Control Panel uygulamaları Windows\System klasründe bulunmaz. Bunların ismini vererek çalıştırabilirsiniz. WinExec ;WinExec ;WinExec ;Windows 9x ve NT'de ortak olarak kullanılan bazı denetim masası uygulamaları access. cpl:Erişilebilirlikappwiz. cpl:Program ekle/kaldırdesk. cpl:Grüntüintl. cpl:Blgesel ayarlarjoy. cpl:Oyun çubuğumain. cpl:Fare mmsys. cpl:Çoklu ortam modem. cpl:Modemsysdm. cpl:Sistemtimedate. cpl:Tarih/SaatWindows'u kapatmak veya yeniden başlatmak Win9x'te bilgisayarı kapatmak veya yeninden başlatmak için : ExitWindowsEx(EWX_SHUTDOWN,0); //yeniden başlatmak için EWX_REBOOTEkran koruyucusunu kapatmak ve açmak//kapatmak içinSystemParametersInfo(SPI_SETSCREENSAVEACTIVE,0, nil,0);//açmak içinSystemParametersInfo(SPI_SETSCREENSAVEACTIVE,1, nil,0);Ekran kartım kaç rengi destekliyorEkran kartınızın kaç rengi desteklediğini aşağıdaki kodla bulabilirsiniz. (1 shl (GetDeviceCaps(Form1. Canvas. Handle, BITSPIXEL) GetDeviceCaps(Form1. Canvas. Handle, PLANES)));Windows Gezginini istediğiniz bir klasrle açmauses kısmına ShellApi unitini ekleyin. ShellExecute(0,'explore','C:\WINDOWS', //buraya açmak istediğiniz klasrü yazın. nil, nil, SW_SHOWNORMAL);Windows'un Bul diyalog penceresini istediğiniz bir klasrle açmaWindows'ta Başlat->Bul->Dosyalar ve Klasrler ile açtığınız Bul diyalog penceresini Delphi içerisinden hem de istediğiniz yolu vererek çalıştırabilirsiniz. uses kısmına ddeman unitini ekleyin. procedure TForm1. Button1Click ;beginwith TDDEClientConv. Create do beginConnectMode := ddeManual;ServiceApplication := 'explorer. exe';SetLink ;OpenLink;ExecuteMacro(' ', False); //diyalog açıldığında konum kısmında CloseLink; //olmasını istediğiniz klasr. Free;end;end;Pencerenin kapatma düğmesini etkisiz hale getirmePencerenin başlık çubuğunda bulunan kapatma düğmesini etkisiz hale getirebilirsiniz. Aynı zamanda sistem menüsündeki Kapat seçeneğide kaybolur. Bunun için aşağıdaki gibi bir kod yazmalısınız. procedure TForm1. Button1Click ;varhwndHandle : THANDLE;hMenuHandle : HMENU;beginhwndHandle := FindWindow(nil, 'Form1'); //Form1 pencerenin başlığını gstermektedir. if (hwndHandle <> 0) then begin //Burayı uygulamanıza gre değiştirinhMenuHandle := GetSystemMenu ;if (hMenuHandle <> 0) thenDeleteMenu ;end;end; Uygulamam Windows her açıldığında otomatik çalışsınuses kısmına Registry unitini ekleyin. const MAX_PATH = 144; procedure TForm1. Button1Click ;varreg: TRegistry;beginreg := TRegistry. Create;reg. RootKey := HKEY_LOCAL_MACHINE;reg. LazyWrite := false;reg. OpenKey ;reg. WriteString ; reg. CloseKey;reg. free;end;Klasre Gzat diyalogunu kullanarak bir klasrü seçmeuses kısmına ShellAPI ve ShlObj unitlerini ekleyin. procedure TForm1. Button1Click ;varTitleName : string;lpItemID : PItemIDList;BrowseInfo : TBrowseInfo;DisplayName : array of char;TempPath : array of char;beginFillChar(BrowseInfo, sizeof , #0);BrowseInfo. hwndOwner := Form1. Handle;BrowseInfo. pszDisplayName := @DisplayName;TitleName := 'Lütfen bir klasr seçin';BrowseInfo. lpszTitle := PChar ;BrowseInfo. ulFlags := BIF_RETURNONLYFSDIRS;lpItemID := SHBrowseForFolder ;if lpItemId <> nil then beginSHGetPathFromIDList ;ShowMessage ;GlobalFreePtr ;end;end;Bir web adresini açmauses kısmına Shellapi unitini ekleyin; ShellExecute(Handle,'open','http://www.geocities.com/siliconvalley/campus/495 8/', nil, nil, sw_ShowMaximized);Bir DOS programını çalıştırma ve çalışması bitince penceresini kapatmaWinExec ; //progdos. exe çalıştırılıyor. Alt + Tab ve Ctrl + Esc tuşlarının kullanılmaz hale getirilmesivarOldVal : LongInt;beginSystemParametersInfo (97, Word , @OldVal, 0) ( Word ile kullanırsanız tuşları tekrar kullanabilirsiniz. ) Bir menü ğesine resim eklemeprocedure TForm1. FormCreate ;varBmp1 : TPicture;beginBmp1 := TPicture. Create;Bmp1. LoadFromFile ;SetMenuItemBitmaps( deneme1. Handle,0, MF_BYPOSITION, Bmp1. Bitmap. Handle, Bmp1. Bitmap. Handle);end;Ağ ortamında makinenin ismini bulmaprocedure TForm1. Button1Click ;varMakine_ismi:array of char;BufferSizeWORD;beginBufferSize:=SizeOf ;GetComputerName ;Showmessage ;end;Ağ ortamında login olmuş kullanıcı ismini bulmaprocedure TForm1. Button1Click ;varKullanici_ismi:array of char;BufferSizeWORD;beginBufferSize:=SizeOf ;GetUserName ;Showmessage ;end;Ekran çzünürlüğünü nasıl ğrenirimScreen. Width //yatay çzünürlükScreen. Height //dikey çzünürlük MessageDlg('Şu anda ' + IntToStr +' x '+IntToStr +' çzünürlükte çalışıyorsunuz', mtInformation, , 0 );Taskbar'ın AutoHide zelliği açık mı, kapalı mı?uses kısmına ShellAPI unitini ekleyin. procedure TForm1. Button1Click ;varABData : TAppBarData;beginABData. cbSize := sizeof ;if (SHAppBarMessage and ABS_AUTOHIDE) > 0 thenShowmessage ;end;Programım biraz beklesinBazı işlemlerden sonra diğer bir işlemi çalıştırmadan nce bir süre beklemek istersiniz. Bu gibi durumlarda Sleep komutunu kullanabilirsiniz. Burada verilen değer milisaniye cinsindendir. (1 saniye=1000 milisaniye) Sleep(10000) //10 saniye beklerCaps lock tuşu açık mı, kapalı mı?if (GetKeyState and $01)<>0 thenShowmessage ;İmleci gizleyip, tekrar gstermeShowCursor //imleci gizler ShowCursor //imleci tekrardan gsterir. Ekran grüntüsünü alınprocedure TForm1. Button1Click ;varDCDesk: HDC;beginDCDesk:=GetWindowDC ;BitBlt(Form1. Canvas. Handle, 0, 0, Screen. Width, Screen. Height, DCDesk, 0, 0, SRCCOPY);ReleaseDC ;end;Not: Yukarıdaki kod ekran grünütüsünü form üstüne alır. Image bileşeni içine ekran grüntüsünü almak için form üzerine bir image bileşeni yerleştirin ve Form1. Canvas. Handle yerine Image1. Canvas. Handle yazın. Map Network Drive diyalogunu açmaWNetConnectionDialog ( 0, RESOURCETYPE_DISK );Bir dosyayı bağlantılı olduğu uygulama ile açmauses kısmına shellapi unitini ekleyin. shellexecute(0,'open', 'c:\test\2. avi','','', SW_NORMAL);Temp klasrünü bulmaprocedure TForm1. Button1Click ;vartemp_klasor: array of char;beginGetTempPath(SizeOf , @temp_klasor);ShowMessage ;end;Ekran koruyucuyu çalıştırmakPostMessage(GetDesktopWindow, WM_SYSCOMMAND, SC_SCREENSAVE, 0); Güç koruma modunda çalışan monitrü kapatıp açmaMonitrü kapatmak için : SendMessage(Application. Handle, WM_SYSCOMMAND, SC_MONITORPOWER, 0); Monitrü açmak için : SendMessage(Application. Handle, WM_SYSCOMMAND, SC_MONITORPOWER, -1);Windows Tarih/Saat zellikleri iletişim kutusunu açmaWinexec ;Windows'ta yüklü bulunan yazıcıları listelemeuses kısmına printers unitini ekleyinprocedure TForm1. Button1Click ;varPrinter:TPrinter;beginPrinter:=TPrinter. Create;Listbox1. Items. Assign end; Programımın Windows NT'de çalıştığını nasıl tespit ederimif Win32Platform = VER_PLATFORM_WIN32_NT thenShowMessage ;Windows oturumunu kapatma ExitWindows (0,0);CPU tipini nasıl tespit ederim uses kısmına Registry unitini ekleyin. Aşağıdaki fonksiyon ile CPU tipini bulabilirsiniz. function CPUType: string;varReg: TRegistry;beginCPUType := '';Reg := TRegistry. Create;tryReg. RootKey := HKEY_LOCAL_MACHINE;if Reg. OpenKey('\Hardware\Description\System\CentralP rocessor\0', False) thenCPUType := Reg. ReadString ;finallyReg. Free;end;end;Bir klasrdeki tüm dosyaları silmeuses kımına ShellApi komutunu ekleyin. Aşağıdaki kod bir klasrdeki tüm dosyaları çp tenekesine atar. Daha fazla seçenek için Delphi yardıma başvurun. procedure TumDosyalariSil;varT:TSHFileOpStruct;beginfillchar(T, sizeof , 0 );with T do beginWnd:=0;wFunc:=FO_DELETE;pFrom:='E:\Temp\TestDel\ . '#0;fFlags:=FOF_ALLOWUNDO or FOF_FILESONLY or FOF_SILENT or FOF_NOCONFIRMATION;end;SHFileOperation ;end;Windows NT/2000/XP'yi Kapatmak2000 ve XP'de bilgisayarı kapatmak için gerekli yetkiye sahip olmanız lazım. Aşağıda kodla bilgisayarı kapatabilirsiniz. vartkHandle : THandle;BufferLun, ret : DWORD;tk, tkPrevious : TTokenPrivileges;LID : TLargeInteger;LUID : TLuIDAndAttributes;versione : TOSVersionInfo;beginBufferLun := 1024;ret := 0;versione. dwOSVersionInfoSize := sizeof ;GetVersionEx ;if versione. dwPlatformId = VER_PLATFORM_WIN32_NT thenbegintkHandle := GetCurrentProcess;OpenProcessToken ;LookupPrivilegeValue(PChar , PChar , LID);LUID. Luid := LID;LUID. Attributes := SE_PRIVILEGE_ENABLED;tk. PrivilegeCount := 1;tk. Privileges := LUID;AdjustTokenPrivileges ;end;ExitWindowsEx(EWX_SHUTDOWN or EWX_PowerOff,0);end; . wav dosyalarını çaldırmakBu iş için PlaySound isimli api'yi kullanabilirsiniz. Api geniş bir parametre aralığına sahip, detaylar için Delphi ile gelen Win32 yardım dosyasına bakabilirsiniz. PlaySound('C:\WINDOWS\MEDIA\Windows Start. wav', 0, Snd_FileName or Snd_Async);Programımın simgesi Tray'de gzüksünBu işi yapan birçok bileşen var. Bunlardan en iyisi artık bedava olarak dağıtılan TurboPower ShellShock paketi içindeki tray bileşeni. Bu paketi indirip kurun. İndirme detayları için sitedeki 3. Parti bileşenler kısmındaki TurboPower yazısına bakabilirsiniz. Programım Windows 2000/Xp'de düzgün çalışıyor, Win9x'te TComboBox bileşeninde xxx. Items. String EReadError veriyorBu hata genellikle sistem kaynakları yetersiz olduğu zaman alınmakta. Win 9x'te sistem kaynakları biraz sınırlı. Diğer programlarda bu tip hatalar almıyorsanız, programınızda aldığınız kaynakları ve bunları işi bittiği anda serbest bırakıp bırakmadığınızı kontrol edin. Win9x'te user ve gdi kaynakları hala sınırlı. TWinControl sınıfından türeyen componentlerin hepsi handle'a sahiptir. Win9x'te handle sayısı 16K ile sınırlı. Ayrıca glyph, image, imagelist ve font gibi componentler de gdi kaynaklarını kullanırlar. Bu da sınırlı Win9x'te. Aşağıdaki noktalara dikkat edin. 1. Kesin çzüm 2000 veya XP'ye terfi. Eğer işyeri ise güvenlik gibi başka nedenlerle bu en iyi çzüm olacaktır. Biliyorsunuz Win9x'in hedef kitlesi ev kullanıcıları. 2. Formları otomatik create etmeyin. Gerektiği zaman oluşturup işi bitince yok edin. 3. TWinControl'den türeyen bileşenler yerine grafik componentler kullanın. Mesela Panel yerine Bevel kullanın. Grafik componentlerin handle'ları olmadığı için Windows kaynaklarını kullanmazlar. 4. Kendi oluşturduğuz nesneleri yok edin. Mesela bir stringlist oluşturup, daha sonra yok etmezseniz program kapatılsa bile hafızada kalmaya devam eder. Aynı kodu programda bir çok kez çağırıyorsanız gerisini siz düşünün. 5. Windows'ta resource monitr isimli bir program var. Yüklü değilse Program ekle/Kaldır windows kısmından kurabilirsiniz. Burdan user ve gdi resource kısmını takip ederek nerelerde kaynakların kritik noktalara indiğini takip edip nlem alabilirsiniz. 6. Herşey yolunda olsa bile eğer bir formda çok fazla bileşen veya resim vs. varsa buda etkileyebilir. Geçenlerde birisi 1600 tane buton olan bir formdan bahsediyordu. Başka bir uygulamayı kapatmakProgramatik olarak başka bir uygulamayı kapatmak için, uygulamay WM_QUIT mesajı gndermeniz lazım. function KillApp : boolean;var AppHandle:THandle;beginAppHandle:=FindWindow ;Result:=PostMessage(AppHandle, WM_QUIT, 0, 0);end;Kullanılışı : if not KillApp thenShowMessage ;CD'nin takılıp çıkarıldığından haberdar olmaBunun için WM_DEVICECHANGE mesajlarını yakalamamız lazım. private kısmına aşağıdaki satırı ekleyin : procedure WMDeviceChange ; message WM_DEVICECHANGE;bu da yakalama kısmı : procedure TForm1. WMDeviceChange ;constCD_IN = $8000;CD_OUT = $8004;varMesaj : String;begininherited;case Msg. wParam ofCD_IN : Mesaj := 'CD takıldı';CD_OUT : Mesaj := 'CD çıkarıldı';end;ShowMessage ;end;Sürücü tipini belirlemekFormun üzerine bir memo ve bir buton koyun ve aşağıdaki kodu yazın. procedure TForm1. Button1Click ;varDrive: Char;DriveLetter: String ;beginfor Drive := 'A' to 'Z' dobeginDriveLetter := Drive + ':\';case GetDriveType(PChar ofDRIVE_REMOVABLE: Memo1. Lines. Add(DriveLetter + ' Disket Sürücü ');DRIVE_FIXED: Memo1. Lines. Add(DriveLetter + ' Sabit disk ');DRIVE_REMOTE: Memo1. Lines. Add(DriveLetter + ' Ağ sürücüsü ');DRIVE_CDROM: Memo1. Lines. Add(DriveLetter + ' CD-Rom ');DRIVE_RAMDISK: Memo1. Lines. Add ;end;end;end;Bir fontu Windows'a kurmadan uygulamanızda kullanmaFormun OnCreate ve OnClose olaylarına aşağıdaki kodları yazın. procedure TForm1. FormCreate ;beginAddFontResource ;SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0);end;procedure TForm1. FormClose ;beginRemoveFontResource ;SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0);end;Bir Klasrdeki Dosyaları Başka Bir Klasre Kopyalamauses kısmına ShellApi unitini ekleyin. procedure TForm1. Button1Click ; var OpStruc: TSHFileOpStruct; frombuf, tobuf: Array of Char; Begin fillChar( OpStruc, Sizeof , 0 ); FillChar( frombuf, Sizeof , 0 ); FillChar( tobuf, Sizeof , 0 ); StrPCopy ; StrPCopy ; With OpStruc DO Begin Wnd:= Handle; wFunc:= FO_COPY; pFrom:= @frombuf; pTo:=@tobuf; fFlags:= FOF_NOCONFIRMATION or FOF_RENAMEONCOLLISION; end; ShFileOperation ; end;Windows'un zel Klasrlerini AçmaAşağıdaki kodla Bilgisayarım, Masaüstü, Yazıcılar, Fontlar gibi zel Windows klasrlerini açabilirsiniz. uses shellapi, ShlObj, ActiveX;procedure TForm1. Button1Click ;varexInfo: TShellExecuteInfo;Procedure FreePidl ;Varallocator: IMalloc;BeginIf Succeeded(SHGetMalloc Then Beginallocator. Free ; allocator. Release; End;End;BeginFillChar( exInfo, Sizeof , 0 );// initialize all fields to 0With exInfo Do BegincbSize:= Sizeof ; // required! fMask := SEE_MASK_FLAG_DDEWAIT or SEE_MASK_IDLIST;Wnd := Handle;nShow := SW_SHOWNORMAL;lpVerb := 'open';ShGetSpecialFolder ( handle, CSIDL_DESKTOP, PItemIDLIst ;End;ShellExecuteEx ;FreePIDL ;end;Diğer zel klasrler : CSIDL_DESKTOP, CSIDL_PROGRAMS, CSIDL_CONTROLS, CSIDL_PRINTERS, CSIDL_PERSONAL, CSIDL_STARTUP, CSIDL_RECENT, CSIDL_SENDTO, CSIDL_BITBUCKET, CSIDL_STARTMENU, CSIDL_DESKTOPDIRECTORY, CSIDL_DRIVES , CSIDL_NETWORK, CSIDL_NETHOOD, CSIDL_FONTS, CSIDL_TEMPLATES. http://yigitdemirag.com