สำหรับวิธีการในการสร้างการ run โปรแกรมตอน
startup windows นั้น สามารถทำได้หลายวิธี ขึ้นอยู่กับการเลือกนำมาใช้ ของ
programmer แต่ละท่าน แต่วิธีที่นิยมใช้กันโดยทั่วไป จะมีอยู่ 2 วิธีคือ
- การสร้าง Shortcut ไว้ใน startup
เมนู (ดังแสดงในรูปที่ 1)
- การแก้ไข Registry (ดังแสดงในรูปที่
2)

รูปที่ 1 หน้าต่างแสดง Startup เมนู

รูปที่ 2 แสดงหน้าต่างของโปรแกรม Registry
Editorู
และสำหรับอีกวิธีที่อยากจะบอกก็คือ
การเขียน Service ให้ไปเรียก run โปรแกรมที่ต้องการ ซึ่งก็คงเป็นเรื่องที่ยุ่งยากเกินไป
(ประมาณว่าทำง่ายๆไม่เป็น หรือว่า ต้องการบาง funtion ที่วิธีอื่นทำไม่ได้เช่น
มีเงื่อนไขในการ run โปรแกรม เป็นต้น) สำหรับการเขียน Service สามารถหาอ่านได้ที่
การเขียน Service Application เพื่อใช้งานบน Windows NT/2000/XP
เอาละครับต่อไป เราจะมาพูดถึง วิธีการในการแก้ไข
Registry กัน แต่ก่อนอื่น ก็คงต้อง ทำความเข้าใจ สำหรับบางท่าน ที่ยังไม่เข้าใจ
เรื่อง Registry มาก่อน
Registry คือ.....?
Registry เป็นส่วนที่เก็บของ config
และ ข้อมูลต่างๆของ windows รวมทั้งค่าการทำงานต่างๆ ของ windows และโปรแกรมต่างๆ
ซึ่งเราก็สามารถที่จะเขียนโปรแกรม
ไปจัดการกับ Registry ได้เช่นกัน แต่ต้องระวังให้ดี
เพราะอาจจะทำให้ windows ของคุณ ิboot ไม่ขึ้นเลยก็เป็นได้
การเรียกแก้ไข Registry
ในการที่เราจะแก้ไขหรือ จัดการกับ
Registry จะต้องใช้โปรแกรม Registry Editor
ซึ่ง windows ให้มาใช้ในการจัดการ registry โดยคุณ สามารถเรียกโปรแกรมนี้
ผ่านทาง run เมนู โดยมีขั้นตอนดังนี้
- เลือกที่เมนู Start->Run
- พิมพ์ข้อความ regedit แล้วกด Enter
จะปรากฏหน้าต่างของโปรแกรม Registry
Editor ดังรูปด้านล่าง

รูปที่ 3 แสดงหน้าต่าง Run

รูปที่ 4 แสดงหน้าต่างของโปรแกรม Registry
Editor
การสร้างส่วนที่กำหนดการ Run โปรแกรม
สำหรับส่วนที่ใช้ในการเรียก run โปรแกรม
ในขณะที่ windows กำลัง startup ขึ้นมามานั้นจะอยู่ในส่วนของ
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
และ
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce
|
ดังรูปที่ 5 ด้านล่างนี้

รูปที่ 5 แสดงผลตำแหน่ง path ที่กำหนดการ
run โปรแกรมใน Registry

รูปที่ 6 แสดง รายชื่อ (String Value)ที่จะถูก
run ตอน startup
ดังรูปที่ 6 จะแสดง String Value ของ
โปรแกรม Norton Antivirus ที่จะrun ไฟล์ navapw32.exe ตอนที่เรา Startup
windows
ข้อแตกต่างระหว่าง RunOnce และ
Run
- RunOnce จะเป็นส่วนที่ใช้ในการเก็บรายชื่อโปรแกรม
ที่ต้องการ run เพียงครั้งเดียว แล้วรายชื่อนั้น ก็จะถูกลบหายไป เช่นเมื่อเรากำหนดโปรแกรมให้
run ในส่วนของ RunOnce แล้วทำการ reboot เครื่อง เมื่อเครื่องเรา boot
ขึ้นมา windows ก็จะไป run ไฟล์ ที่เรากำหนดไว้ และลบรายชื่อนั้นออกไปจาก
Registry ที่อยู่ในส่วนของ RunOnce
- Run จะต่างกับ RunOnce ตรงที่ Run
จะไม่มีการลบ รายชื่อของโปรแกรม ออกจาก Registry แต่อย่างใด
การใส่รายชื่อโปรแกรม
หากคุณต้องการใส่รายชื่อโปรแกรม ที่ต้องการให้
run ตอน startup windows เข้าไปใน Registry จะมีขั้นตอนในการทำดังนี้
- คลิกขวา ด้านที่แสดงรายชื่อ จะปรากฏ
pop up windows ขึ้นมา ให้เลือก New->String Value
- ทำการกำหนดชื่อโปรแกรมของคุณ
- ทำการดับเบิ้ลคลิก ที่ชื่อที่เรากำหนดขึ้น
แล้ป้อน path ของไฟล์ ที่เราต้องให้ run ตอน startup
การเขียนโปรแกรม
คราวนี้ก็จะเป็น code ในการแก้ไข Registry
ครับ โดยมีขั้นตอนดังนี้
- เปิดโปรแกรม Delphi เลือก สร้าง
Project ใหม่
- วางปุ่มลงบน Form 2 ปุ่มด้วยกัน
- กำหนด Property caption ของ Button1
เป็น "Create"
- กำหนด Property caption ของ Button2
เป็น "Delete"
จากขั้นตอนข้างต้นเราได้ Form1 มีหน้าตาดังรูปที่
7

รูปที่ 7 แสดง ผลการออกแบบ โปรแกรม
- ทำการประกาศเรียกใช้ Unit Registry
,ดับเบิ้ลคลิกที่ Button1, Button2 แล้วป้อนโค้ด ผลของโค้ดแสดง ดังตาราง
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses Registry;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var RegIniFile :TRegIniFile;
begin
RegIniFile :=TRegIniFile.Create;
RegIniFile.RootKey :=HKEY_LOCAL_MACHINE;
RegIniFile.WriteString('SOFTWARE\Microsoft\Windows\CurrentVersion\Run'
,'NotePad','C:\Windows\NOTEPAD.EXE');
end;
procedure TForm1.Button2Click(Sender: TObject);
var RegIniFile :TRegIniFile;
begin
RegIniFile :=TRegIniFile.Create;
RegIniFile.RootKey :=HKEY_LOCAL_MACHINE;
RegIniFile.DeleteKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Run','NotePad');
end;
end.
|
ตามตัวอย่างจะเป็นการ สร้างการเรียกเปิดโปรแกรม
notepad จาก Registry และ ส่วนของการลบการทำงาน ออกจาก Registry ด้วย
หลังจากนั้นก็ลอง run โปรแกรม แล้วคลิกปุ่ม
Create และทำการ reboot เครื่อง เพื่อดูการทำงานว่า สามารถทำได้ได้ถูกต้องหรือไม่
ส่วนปุ่ม Delete จะใช้สำหรับการลบ String value ที่เราได้สร้างขึ้นมา จาก
Registry
อย่าลืม Save โปรเจ็คก่อน
reboot ด้วยนะครับ จะได้ไม่ได้เขียนใหม่
ทิ้งท้าย
หวังว่าเทคนิค เล็กๆน้อยๆ นี้จะเป็นประโยชน์บ้างสำหรับ เพื่อนๆพี่ๆน้อง ทุกท่าน
ขอขอบคุณที่ให้ความสนใจ และติดตามเว็บเรา ด้วยดี เสมอมา แล้วพบกันใหม่กับ
9'M |