Belgeler menüsüne bir dosya ekleme uses kısmına ShlOBJ unitini ekleyin; procedure TForm1.Button1Click(Sender: TObject); var s : string; begin s := 'C:\DownLoad\deneme.html'; SHAddToRecentDocs(SHARD_PATH, pChar(s)); end; uses kısmına ShlOBJ unitini ekleyin; SHAddToRecentDocs(SHARD_PATH, nil); var s: string; begin s := 'c:\windows\cars.bmp'; SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, PChar(s),0); Başlat butonunu gizlemek veya kullanılmaz hale getirmek procedure TForm1.Button1Click(Sender: TObject); var Rgn : hRgn; begin // Başlat butonunu gizle Rgn := CreateRectRgn(0, 0, 0, 0); SetWindowRgn(FindWindowEx(FindWindow('Shell_TrayWnd', nil), 0, 'Button', nil), Rgn, true); end; procedure TForm1.Button2Click(Sender: TObject); begin //Gizlenen Başlat butonunu eski haline döndürmek için SetWindowRgn(FindWindowEx(FindWindow('Shell_TrayWnd', nil), 0, 'Button', nil), 0, true); end; procedure TForm1.Button3Click(Sender: TObject); begin //Başlat butonunu kullanılmaz yap EnableWindow(FindWindowEx(FindWindow('Shell_TrayWnd', nil), 0, 'Button', nil), false); end; procedure TForm1.Button4Click(Sender: TObject); begin //Kullanılmaz yapılan Başlat butonunu eski haline getirmek için EnableWindow(FindWindowEx(FindWindow('Shell_TrayWnd', nil), 0, 'Button', nil), true); end; WinExec('c:\windows\calc.exe',sw_show); Harddiskin seri numarasının bulunması procedure TForm1.Button1Click(Sender: TObject); var VolumeSerialNumber : DWORD; MaximumComponentLength : DWORD; FileSystemFlags : DWORD; SerialNumber : string; begin GetVolumeInformation('C:\', nil, 0, @VolumeSerialNumber, MaximumComponentLength, FileSystemFlags, nil, 0); SerialNumber := IntToHex(HiWord(VolumeSerialNumber), 4) + '-' + IntToHex(LoWord(VolumeSerialNumber), 4); Memo1.Lines.Add(SerialNumber); end; Windows ve System klasörlerinin bulunması procedure TForm1.Button1Click(Sender: TObject); var a : Array[0..144] of char; begin GetWindowsDirectory(a, sizeof(a)); ShowMessage(StrPas(a)); GetSystemDirectory(a, sizeof(a)); ShowMessage(StrPas(a)); end; Windows lisans bilgilerinin (isim ve şirket) bulunması uses kısmına Registry unitini ekleyin; procedure TForm1.Button1Click(Sender:TObject); var reg: TRegIniFile; begin reg := TRegIniFile.create('SOFTWARE\MICROSOFT\MS SETUP (ACME)\'); Memo1.Lines.Add(reg.ReadString('USER INFO', 'DefName', 'Mustafa ŞİMŞEK')); Memo1.Lines.Add(reg.ReadString('USER INFO', 'DefCompany', '')); reg.free; end; MessageBeep(word(-1)); Bir Denetim Masası uygulamasını çalıştırmak Control Panel uygulamaları Windows\System klasörü altında bulunur. *.CPL uzantılı dosyalardır. Bu uygulamaları Control.Exe programı ile çalıştırabilirsiniz. Bazı Control Panel uygulamaları Windows\System klasöründe bulunmaz. Bunların ismini vererek çalıştırabilirsiniz. WinExec('C:\WINDOWS\CONTROL.EXE TIMEDATE.CPL', sw_ShowNormal); WinExec('C:\WINDOWS\CONTROL.EXE MOUSE', sw_ShowNormal); WinExec('C:\WINDOWS\CONTROL.EXE PRINTERS', sw_ShowNormal); Windows 9x ve NT'de ortak olarak kullanılan bazı denetim masası uygulamaları
Windows'u kapatmak veya yeniden başlatmak(reboot) Win9x'te bilgisayarı kapatmak veya yeninden başlatmak için : ExitWindowsEx(EWX_SHUTDOWN,0); //yeniden başlatmak için EWX_REBOOT Ekran koruyucusunu kapatmak ve açmak //kapatmak için SystemParametersInfo(SPI_SETSCREENSAVEACTIVE, 0, nil, 0); //açmak için SystemParametersInfo(SPI_SETSCREENSAVEACTIVE, 1, nil, 0); Ekran kartım kaç rengi destekliyor Ekran kartınızın kaç rengi desteklediğini aşağıdaki kodla bulabilirsiniz. (1 shl (GetDeviceCaps(Form1.Canvas.Handle, BITSPIXEL) *
Windows Gezginini istediğiniz bir klasörle açma uses kısmına ShellApi unitini ekleyin. ShellExecute(0, 'explore', 'C:\WINDOWS', //buraya açmak istediğiniz klasörü yazın. nil, nil, SW_SHOWNORMAL); Windows'un Bul (Find File) diyalog penceresini istediğiniz bir klasörle açma Windows'ta Başlat->Bul->Dosyalar ve Klasörler 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(Sender: TObject); Pencerenin kapatma düğmesini etkisiz hale getirme Pencerenin başlık çubuğunda bulunan kapatma düğmesini (X) etkisiz hale getirebilirsiniz. Aynı zamanda sistem menüsündeki Kapat(Close) seçeneğide kaybolur. Bunun için aşağıdaki gibi bir kod yazmalısınız. procedure TForm1.Button1Click(Sender: TObject); Uygulamam Windows her açıldığında otomatik çalışsın uses kısmına Registry unitini ekleyin. {$IFNDEF WIN32} const MAX_PATH = 144; {$ENDIF} procedure TForm1.Button1Click(Sender: TObject); var reg: TRegistry; begin reg := TRegistry.Create; reg.RootKey := HKEY_LOCAL_MACHINE; reg.LazyWrite := false; reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run',false); reg.WriteString('Uygulamam', uygulamanızın_yolu_ve_adı); reg.CloseKey; reg.free; end; Klasöre Gözat diyalogunu kullanarak bir klasörü seçme uses kısmına ShellAPI ve ShlObj unitlerini ekleyin. procedure TForm1.Button1Click(Sender: TObject); uses kısmına Shellapi unitini ekleyin; ShellExecute(Handle, 'open', 'http://www.geocities.com/siliconvalley/campus/4958/', nil, nil, sw_ShowMaximized); Bir DOS programını çalıştırma ve çalışması bitince penceresini kapatma WinExec('command.com /c progdos.exe',sw_ShowNormal); //progdos.exe çalıştırılıyor. (* eğer ikinci paremetreyi sw_Hide yaparsanız kullanıcı programın çalıştığını görmez. *) Alt + Tab ve Ctrl + Esc tuşlarının kullanılmaz hale getirilmesi var OldVal : LongInt; begin SystemParametersInfo (97, Word (True), @OldVal, 0) (* Word(False) ile kullanırsanız tuşları tekrar kullanabilirsiniz. *) procedure TForm1.FormCreate(Sender: TObject); var Bmp1 : TPicture; begin Bmp1 := TPicture.Create; Bmp1.LoadFromFile('c:\deneme\turkey.bmp'); SetMenuItemBitmaps( deneme1.Handle, 0, MF_BYPOSITION, Bmp1.Bitmap.Handle, Bmp1.Bitmap.Handle); end; Ağ ortamında makinenin ismini bulma procedure TForm1.Button1Click(Sender: TObject); Ağ ortamında login olmuş kullanıcı ismini bulma procedure TForm1.Button1Click(Sender: TObject); Ekran çözünürlüğünü nasıl öğrenirim Screen.Width //yatay çözünürlük MessageDlg('Şu anda ' + IntToStr( Screen.Width ) +' x '+ IntToStr( Screen.Height )+' çözünürlükte çalışıyorsunuz', mtInformation, [mbOk], 0 ); Taskbar'ın (Görev çubuğu) AutoHide özelliği açık mı, kapalı mı? uses kısmına ShellAPI unitini ekleyin. procedure TForm1.Button1Click(Sender: TObject); Bazı 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 bekler Caps lock tuşu açık mı, kapalı mı? if (GetKeyState(VK_CAPITAL) and $01)<>0 then İmleci (cursor) gizleyip, tekrar gösterme ShowCursor(False) //imleci gizler procedure TForm1.Button1Click(Sender: TObject); Not: Yukarıdaki kod ekran görünütüsünü form üstüne alır. Image bileşeni içine ekran görü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çma WNetConnectionDialog ( 0, RESOURCETYPE_DISK ); Bir dosyayı bağlantılı olduğu uygulama ile açma uses kısmına shellapi unitini ekleyin. shellexecute(0,'open', 'c:\test\2.avi','','',SW_NORMAL); procedure TForm1.Button1Click(Sender: TObject); PostMessage(GetDesktopWindow, WM_SYSCOMMAND, SC_SCREENSAVE, 0); Güç koruma modunda (Power Safe Mode) çalışan monitörü kapatıp açma Monitörü kapatmak için : SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, 0); Monitörü açmak için : SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, -1); Windows Tarih/Saat Özellikleri (Date/Time Properties) iletişim kutusunu açma Winexec('Control.exe Date/Time',sw_shownormal); Windows'ta yüklü bulunan yazıcıları listeleme uses kısmına printers unitini ekleyin procedure TForm1.Button1Click(Sender: TObject); {Bu ipucu Abdurrahman Sinanoğlu tarafından gönderilmiştir} Programımın Windows NT'de çalıştığını nasıl tespit ederim if Win32Platform = VER_PLATFORM_WIN32_NT then Windows oturumunu kapatma (log off) 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; Bir klasördeki tüm dosyaları silme uses kımına ShellApi komutunu ekleyin. Aşağıdaki kod bir klasördeki tüm dosyaları çöp tenekesine atar. Daha fazla seçenek için Delphi yardıma başvurun. procedure TumDosyalariSil; Windows NT/2000/XP'yi Kapatmak 2000 ve XP'de bilgisayarı kapatmak için gerekli yetkiye sahip olmanız lazım. Aşağıda kodla bilgisayarı kapatabilirsiniz. var tkHandle : THandle; BufferLun,ret : DWORD; tk,tkPrevious : TTokenPrivileges; LID : TLargeInteger; LUID : TLuIDAndAttributes; versione : TOSVersionInfo; begin BufferLun := 1024; ret := 0; versione.dwOSVersionInfoSize := sizeof(versione); GetVersionEx(versione); if versione.dwPlatformId = VER_PLATFORM_WIN32_NT then begin tkHandle := GetCurrentProcess; OpenProcessToken(tkHandle,TOKEN_ALL_ACCESS,tkHandle); LookupPrivilegeValue(PChar(''),PChar('SeShutDownPrivilege'),LID); LUID.Luid := LID; LUID.Attributes := SE_PRIVILEGE_ENABLED; tk.PrivilegeCount := 1; tk.Privileges[0] := LUID; AdjustTokenPrivileges(tkHandle,False,tk,BufferLun,tkPrevious,ret); end; ExitWindowsEx(EWX_SHUTDOWN or EWX_PowerOff,0); end; *.wav (ses) dosyalarını çaldırmak Bu 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 (saatin yanında) gözüksün Bu 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.
Bu hata genellikle sistem kaynakları
yetersiz olduğu zaman alınmakta. Win 9x'te sistem kaynakları biraz sınırlı.
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. Programatik olarak başka bir uygulamayı kapatmak için, uygulamay WM_QUIT mesajı göndermeniz lazım. function KillApp(const sCapt: PChar) : boolean; Kullanılışı : if not KillApp('Pencere başlığı') then CD'nin takılıp çıkarıldığından haberdar olma Bunun için WM_DEVICECHANGE mesajlarını yakalamamız lazım. private kısmına aşağıdaki satırı ekleyin : procedure WMDeviceChange(var Msg: TMessage); message WM_DEVICECHANGE; bu da yakalama kısmı : procedure TForm1.WMDeviceChange (var Msg:
TMessage); Sürücü (drive) tipini belirlemek Formun üzerine bir memo ve bir buton koyun ve aşağıdaki kodu yazın. procedure
TForm1.Button1Click(Sender: TObject); Bir fontu (.ttf) Windows'a kurmadan uygulamanızda kullanma Formun OnCreate ve OnClose olaylarına aşağıdaki kodları yazın. procedure TForm1.FormCreate(Sender: TObject); Bir Klasördeki Dosyaları Başka Bir Klasöre Kopyalama uses kısmına ShellApi unitini ekleyin. procedure TForm1.Button1Click(Sender: TObject); Windows'un Özel Klasörlerini Açma Aşağıdaki kodla Bilgisayarım, Masaüstü, Yazıcılar, Fontlar gibi özel Windows klasörlerini açabilirsiniz. uses shellapi, ShlObj, ActiveX; procedure TForm1.Button1Click(Sender: TObject); Diğer özel klasörler : CSIDL_DESKTOP,
CSIDL_PROGRAMS, CSIDL_CONTROLS, CSIDL_PRINTERS, CSIDL_PERSONAL, CSIDL_STARTUP,
CSIDL_RECENT, CSIDL_SENDTO, CSIDL_BITBUCKET, CSIDL_STARTMENU,
CSIDL_DESKTOPDIRECTORY, CSIDL_DRIVES (My Computer), CSIDL_NETWORK,
CSIDL_NETHOOD, CSIDL_FONTS, CSIDL_TEMPLATES.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||