Amazon Best VPN GoSearch

ไอคอน Fav ของ OnWorks

FvwmScript - ออนไลน์ในคลาวด์

เรียกใช้ FvwmScript ในผู้ให้บริการโฮสต์ฟรีของ OnWorks ผ่าน Ubuntu Online, Fedora Online, โปรแกรมจำลองออนไลน์ของ Windows หรือโปรแกรมจำลองออนไลน์ของ MAC OS

นี่คือคำสั่ง FvwmScript ที่สามารถเรียกใช้ในผู้ให้บริการโฮสต์ฟรีของ OnWorks โดยใช้หนึ่งในเวิร์กสเตชันออนไลน์ฟรีของเรา เช่น Ubuntu Online, Fedora Online, โปรแกรมจำลองออนไลน์ของ Windows หรือโปรแกรมจำลองออนไลน์ของ MAC OS

โครงการ:

ชื่อ


FvwmScript - โมดูลสำหรับสร้างส่วนต่อประสานกราฟิกกับผู้ใช้

เรื่องย่อ


FvwmScript ต้องเกิดจาก Fvwm มันจะไม่ทำงานจากบรรทัดคำสั่ง

DESCRIPTION


FvwmScript เป็นโมดูลที่ให้คุณสร้างแอปพลิเคชั่นกราฟิกมากมายเช่น
อุปกรณ์เสริมเดสก์ท็อป แผงปุ่มพร้อมเมนูป๊อปอัป กล่องโต้ตอบโมดอล... เมื่อเริ่มต้น
FvwmScript อ่านไฟล์ที่ระบุบนบรรทัดรับคำสั่ง ไฟล์นี้มี
สคริปต์ สคริปต์นี้ไม่รวมอยู่ในไฟล์การกำหนดค่าของ Fvwm

สคริปต์ FvwmScript สามารถควบคุมได้อย่างเต็มที่โดยใช้แป้นพิมพ์ (Shift)-แท็บหมุนเวียน
รอบ ๆ วิดเจ็ต, Return จำลองการคลิกเมาส์, ลูกศรเลื่อนเคอร์เซอร์หรือเปลี่ยน
ค่าของวิดเจ็ตและ Escape "ยกเลิก" สำหรับ Menu และ PopupMenu

การร้องขอ


สามารถเรียกใช้ FvwmScript ได้โดยการแทรกบรรทัด `Module FvwmScript name_of_script' ใน
ไฟล์ .fvwm2rc ไฟล์ "name_of_script" สามารถเริ่มต้นด้วยเครื่องหมายทับ ซึ่งในกรณีนี้ จะเป็น a
พาธแบบเต็ม และไฟล์ถูกอ่าน หาก "name_of_script" ไม่ขึ้นต้นด้วย a
สแลช FvwmScript จะดูในที่ต่างๆ กัน หาก .fvwm2rc มี
บรรทัดคำสั่ง `*FvwmScript: Path path_of_the_script_directory', FvwmScript จะลองทำดู
ไดเร็กทอรี หากไม่ได้ผล FvwmScript จะพยายามไดเรกทอรีการกำหนดค่าระบบและ
ไดเร็กทอรีการกำหนดค่าผู้ใช้ตามที่อธิบายไว้ภายใต้คำสั่ง "อ่าน" ใน fvwm man
หน้า.

คำสั่งเพื่อเริ่ม FvwmScript สามารถวางบนบรรทัดได้ด้วยตัวเอง ถ้า FvwmScript เป็น
เกิดขึ้นระหว่างการเริ่มต้นของ fvwm หรือสามารถผูกกับเมนูหรือปุ่มเมาส์หรือ
การกดแป้นพิมพ์เพื่อเรียกใช้ในภายหลัง

การกำหนดค่า OPTIONS


คำสั่งต่อไปนี้สามารถใช้ได้ในไฟล์ปรับแต่ง (ดู fvwm(1) มาตรา โมดูล
คำสั่ง เพื่อดูรายละเอียด) ใช้เฉพาะในกรณีที่คำสั่งสคริปต์ที่เกี่ยวข้องไม่ใช่
ที่ใช้ในสคริปต์

*FvwmScript: DefaultFont ตัวอักษร
ระบุแบบอักษรเริ่มต้นที่จะใช้ หากไม่ได้ระบุด้วยคำสั่งนี้หรือใน
สคริปต์ด้วยคำสั่ง Font จะถือว่าฟอนต์คงที่

*FvwmScript: DefaultFore สี
ระบุสีพื้นหน้าเริ่มต้นที่จะใช้ หากไม่ระบุตามนี้
คำสั่งหรือในสคริปต์ด้วยคำสั่ง ForeColor จะใช้สีดำ

*FvwmScript: DefaultBack สี
ระบุสีพื้นหลังเริ่มต้นที่จะใช้ หากไม่ระบุตามนี้
คำสั่งหรือในสคริปต์ด้วยคำสั่ง BackColor จะใช้ grey85

*FvwmScript: DefaultHilight สี
ระบุสีไฮไลท์เริ่มต้นที่จะใช้ หากไม่ได้ระบุด้วยคำสั่งนี้
หรือในสคริปต์ด้วยคำสั่ง HilightColor จะใช้ grey100

*FvwmScript: DefaultShadow สี
ระบุสีเงาเริ่มต้นที่จะใช้ หากไม่ระบุด้วยคำสั่งนี้
หรือในสคริปต์ด้วยคำสั่ง ShadowColor จะใช้ grey55

*FvwmScript: ชุดสีเริ่มต้น ชุดสี
บอกให้โมดูลใช้ colorset ชุดสี เป็นชุดสีเริ่มต้น อ้างถึง
หน้าคน FvwmTheme สำหรับรายละเอียดเกี่ยวกับชุดสี

กายวิภาคศาสตร์ OF A สคริปต์


FvwmScript ใช้ภาษาการเขียนโปรแกรมเฉพาะ สคริปต์ประกอบด้วยห้าส่วน
หัวเรื่องมีลักษณะทั่วไปของหน้าต่างและคุณสมบัติเริ่มต้นสำหรับทุกคน
วิดเจ็ต ส่วนที่สองประกอบด้วยคำสั่งที่ดำเนินการเมื่อเริ่มต้น
สคริปต์ ส่วนที่สามมีงานเป็นระยะซึ่งจะดำเนินการทุกวินาที NS
ส่วนที่สี่ประกอบด้วยคำสั่งที่ดำเนินการเมื่อออก และส่วนสุดท้ายประกอบด้วย
คำอธิบายของวิดเจ็ต วิดเจ็ตประกอบด้วยรายการสิบเอ็ดประเภท: ป้ายข้อความ
การป้อนข้อความบรรทัดเดียว ปุ่มตัวเลือก ช่องทำเครื่องหมาย ปุ่มกด แนวนอนและแนวตั้ง
แถบเลื่อน, สี่เหลี่ยม, เมนูป๊อปอัป, swallowexecs และแถบเลื่อนขนาดเล็ก

หัว OF A สคริปต์


ไวยากรณ์เป็นดังนี้:

ชื่อหน้าต่าง เชือก
ตัวเลือกนี้ตั้งชื่อหน้าต่าง

ขนาดหน้าต่าง ความกว้าง ความสูง
ตัวเลือกนี้กำหนดขนาดหน้าต่าง ความกว้าง และ ความสูง เป็นค่าตัวเลข

ตำแหน่งหน้าต่าง x y
ตัวเลือกนี้กำหนดตำแหน่งของหน้าต่าง x และ y เป็นค่าตัวเลข

สีพื้น {สี}
ตัวเลือกนี้กำหนดสีพื้นหน้าเริ่มต้นสำหรับวิดเจ็ตทั้งหมด

สีพื้นหลัง {สี}
ตัวเลือกนี้กำหนดสีพื้นหลังเริ่มต้นสำหรับวิดเจ็ตทั้งหมด

ไฮไลท์สี {สี}
ตัวเลือกนี้กำหนดสีไฮไลท์เริ่มต้นสำหรับวิดเจ็ตทั้งหมด

สีเงา {สี}
ตัวเลือกนี้กำหนดสีเงาเริ่มต้นสำหรับวิดเจ็ตทั้งหมด

ชุดสี {n}
ตัวเลือกนี้ตั้งค่าชุดสีเริ่มต้นสำหรับวิดเจ็ตทั้งหมด

แบบอักษร {ตัวอักษร}
ตัวเลือกนี้ตั้งค่าแบบอักษรเริ่มต้นสำหรับวิดเจ็ตทั้งหมด

ใช้ Gettext [locale_path]
เปิดใช้งานการใช้กลไก gettext ซึ่งใช้โดย WindowLocaleTitle
LocaleTitle คำแนะนำ ChangeLocaleTitle และฟังก์ชัน Gettext ถ้าไม่
อาร์กิวเมนต์ได้รับ ใช้แค็ตตาล็อกโลแคล FvwmScript เริ่มต้น แคตตาล็อกนี้คือ
ภายใต้ไดเร็กทอรีการติดตั้ง locale fvwm และโดเมนข้อความคือ FvwmScript
(install_prefix/share/locale/*/LC_MESSAGES/FvwmScript.mo) คุณสามารถรีเซ็ตสิ่งนี้ได้
แคตตาล็อกหรือเพิ่มแคตตาล็อกบางรายการในลักษณะเดียวกับ LocalePath fvwm
คำสั่ง (ดูหน้าคู่มือ fvwm) คำสั่งนี้ควรวางไว้ข้างหน้า
คำแนะนำ WindowLocaleTitle

หน้าต่างLocaleTitle เชือก
ตัวเลือกนี้ตั้งชื่อหน้าต่าง แต่ใช้แคตตาล็อกสถานที่ที่กำหนดด้วย
ใช้ Gettext

การเริ่มต้น


ส่วนนี้มีคำแนะนำที่จะดำเนินการเมื่อเริ่มต้น ตัวอย่างเช่น:
ในนั้น
เริ่มต้น
ทำ "Exec cat tada.voc > /dev/dsp"
วาร์ปพอยเตอร์ 1
ตั้งค่า $ToDo=Restart
ปลาย
คำแนะนำเหล่านี้ใช้สำหรับเล่นเสียง เลื่อนตัวชี้ไปที่วิดเจ็ต 1 และไปที่
เริ่มต้น $ToDo เพื่อ "เริ่มต้นใหม่" ทุกครั้งที่เริ่มต้น

เป็นระยะ งานที่


สคริปต์ส่วนนี้ประกอบด้วยคำสั่งที่ดำเนินการทุกวินาที สำหรับ
ตัวอย่าง:
งานประจำ
เริ่มต้น
ถ้า (RemainderOfDiv (GetTime) 10)==0 แล้ว
ทำ {Exec xcalc}
ปลาย
ตัวอย่างนี้แสดงวิธีการเปิด xcalc ทุกๆ 10 วินาที

DIE เลิก ฟังก์ชั่น


สคริปต์ส่วนนี้ประกอบด้วยคำสั่งที่ดำเนินการเมื่อออกจากสคริปต์
(หลังจากคำสั่ง Quit หรือหากคุณปิดหน้าต่างด้วยคำสั่ง Close, Delete หรือ Destroy
คำสั่ง fvwm) ตัวอย่างเช่น
ออกจาก Func
เริ่มต้น
ทำ {Echo bye, bye}
ปลาย
โปรดทราบว่าหากคุณใช้คำสั่ง KillModule fvwm เพื่อปิดสคริปต์
คำสั่งหรือหน้าที่ซึ่งอาศัยการมีอยู่ของการเชื่อมโยงการสื่อสารระหว่าง
สคริปต์และ fvwm จะไม่ถูกดำเนินการ (เช่น คำสั่ง Do) อย่างราบรื่นฆ่า
สคริปต์ด้วยคำสั่ง fvwm ดู คำสั่ง มาตรา.

MAIN OF A สคริปต์


ส่วนที่สองของสคริปต์มีคำอธิบายสำหรับทุกวิดเจ็ตในสคริปต์
คำอธิบายวิดเจ็ตแต่ละรายการมีสองส่วน ส่วนแรกอธิบายคุณสมบัติเริ่มต้น the
ส่วนที่สองประกอบด้วยคำสั่งที่ดำเนินการเมื่อวิดเจ็ตได้รับข้อความ
วิดเจ็ตทั้งหมดสามารถส่งและรับข้อความได้ ข้อความทั้งหมดจะถูกระบุด้วยตัวเลข NS
ข้อความ "UserAction" จะถูกส่งไปยังวิดเจ็ตเมื่อผู้ใช้ใช้งานวิดเจ็ต ไวยากรณ์
สำหรับส่วนแรกคือ:
Widget id # ตัวเลขระหว่าง 1 ถึง 999 รวม
อสังหาริมทรัพย์
พิมพ์สตริง
ขนาด กว้าง สูง
ตำแหน่ง xy
ชื่อเรื่อง { สตริง }
มูลค่า int
แม็กซ์แวลูอินท์
ค่าต่ำสุด int
สตริงตัวอักษร
สีพื้น { สี }
BackColor { สี }
HilightColor { สี }
ShadowColor { สี }
ชุดสี int
แฟล็กแฟล็กOpt
ตัวเลือก flagsOpt เพื่อตั้งค่าสถานะเป็นรายการคั่นช่องว่างที่มีหนึ่งรายการขึ้นไป
คำหลัก ซ่อนเร้น, ไม่มีReliefString, โนโฟกัส, ซ้าย / ศูนย์ / ขวา. ซ่อนเร้น จะใช้ในการ
ระบุว่าวิดเจ็ตถูกซ่อนไว้เมื่อเริ่มต้นหรือไม่ ไม่มีReliefString ระบุว่าสตริงถูกดึง
ด้วยความโล่งใจหรือไม่ โนโฟกัส ระบุว่าวิดเจ็ตสามารถรับโฟกัสของแป้นพิมพ์ได้หรือไม่
โดยค่าเริ่มต้น วิดเจ็ตทั้งหมดจะโฟกัส ยกเว้น Rectangle, HDipstick และ VDipstick ที่ไม่สามารถทำได้
นอกจากนี้ วิดเจ็ต NoFocus จะถูกข้ามเมื่อคุณวนรอบวิดเจ็ตด้วย
(Shift-)แท็บลัด ซ้าย / ศูนย์ / ขวา ระบุตำแหน่งของข้อความ เหล่านี้ใช้
เฉพาะ ItemDraw, List, Menu, PopupMenu และ PushButton ค่าเริ่มต้นคือ ศูนย์ สำหรับ ItemDraw
และปุ่มกดและ ซ้าย สำหรับวิดเจ็ตอื่นๆ

สามารถใช้ LocaleTitle แทน Title สำหรับการใช้แคตตาล็อกสถานที่ที่กำหนดด้วย
ใช้ Gettext

ต้องระบุตำแหน่งของทุกวิดเจ็ต

ไวยากรณ์สำหรับส่วนที่สองคือ:
หลัก
ข้อความกรณีของ
ซิงเกิลคลิก:
เริ่มต้น
# รายการคำสั่งที่จะ
# ดำเนินการเมื่อวิดเจ็ตได้รับ
# ข้อความ "SingleClic" ข้อความนี้คือ
# สร้างขึ้นโดยผู้ใช้
ปลาย
1:
เริ่มต้น
# รายการคำสั่งที่จะ
# ดำเนินการเมื่อวิดเจ็ตได้รับ
#ข้อความ1
ปลาย
ปลาย

รายการ OF วิดเจ็ต


วิดเจ็ตมีสิบห้าประเภท

กล่องกาเครื่องหมาย: แสดงกล่องกาเครื่องหมายพร้อมสตริง

ชื่อหนังสือ: ชื่อของช่องทำเครื่องหมาย

ความคุ้มค่า: ถ้าค่าเท่ากับ 1 ช่องจะถูกเลือก มิฉะนั้นจะไม่มี

เค้ก ขนาด ทรัพย์สินถูกละเว้น

HD ลิปสติ๊ก: แสดงก้านวัดระดับน้ำมันแนวนอน
วิดเจ็ตนี้สามารถใช้เพื่อแสดงการใช้ดิสก์

ความคุ้มค่า: ระบุค่าปัจจุบันของก้านวัดระดับน้ำมัน

ค่าต่ำสุด: ระบุค่าต่ำสุดของก้านวัดน้ำมัน

แม็กซ์แวลู: ระบุค่าสูงสุดของก้านวัดระดับน้ำมัน

กำหนดขนาดขั้นต่ำ 30x11

HScrollBar: แสดงแถบเลื่อนแนวนอน

ความคุ้มค่า: ตำแหน่งของนิ้วหัวแม่มือ

แม็กซ์แวลู: ขีด จำกัด สูงสุดของมูลค่า

ค่าต่ำสุด: ขีดจำกัดล่างของมูลค่า

คุณสมบัติความสูงจะถูกละเว้นและกำหนดความกว้างขั้นต่ำ ความกว้างควรเป็น
อย่างน้อยช่วงบวก 37 ถ้าค่าทั้งหมดสามารถเลือกได้ เช่น ต่ำสุด 0 และ
สูงสุด 10 มีช่วงของ 11 ดังนั้นควรมีความกว้างขั้นต่ำ 48

รายการวาด: แสดงไอคอนและ/หรือสตริง

ชื่อหนังสือ: สตริงที่จะแสดง

ไอคอน: ไอคอนที่จะแสดง

แม็กซ์แวลู: x พิกัดของเคอร์เซอร์

ค่าต่ำสุด: พิกัด y ของเคอร์เซอร์

ขนาดถูกทำให้ใหญ่พอที่จะมีชื่อและ/หรือไอคอน

รายการ: แสดงรายการ
รายการช่วยให้ผู้ใช้สามารถเลือกระหว่างตัวเลือกต่างๆ

ความคุ้มค่า: ระบุตัวเลือกที่เลือก

ค่าต่ำสุด: ตัวเลือกแรกที่มองเห็นได้

ชื่อหนังสือ: ชื่อมีตัวเลือกที่แสดงในรายการ ไวยากรณ์มีดังต่อไปนี้:
{ตัวเลือก 1|ตัวเลือก 2|...|ตัวเลือก N}. เมนูทั้งหมดจะแสดงที่ด้านบนของหน้าต่าง

กำหนดความสูงขั้นต่ำสามรายการและกำหนดความกว้างอย่างน้อย
108.

เมนู: แสดงเมนูที่ให้ผู้ใช้สามารถเลือกตัวเลือกได้
รายการประเภท Menu จะเรียงจากซ้ายไปขวาที่ด้านบนของหน้าต่าง
คุณสมบัติขนาดและตำแหน่งจะถูกละเว้น

ความคุ้มค่า: ระบุตัวเลือกที่เลือก

ชื่อหนังสือ: ชื่อมีตัวเลือกที่แสดงในเมนู ไวยากรณ์มีดังต่อไปนี้:
{ตัวเลือก 1|ตัวเลือก 2|...|ตัวเลือก N}.

มินิสกรอลล์: แสดงแถบเลื่อนแนวตั้งขนาดเล็กมาก

ความคุ้มค่า: ตำแหน่งของนิ้วหัวแม่มือ

แม็กซ์แวลู: ขีด จำกัด สูงสุดของมูลค่า

ค่าต่ำสุด: ขีดจำกัดล่างของมูลค่า

ขนาดตั้งไว้ที่ 19x34

เมนูป๊อปอัพ: แสดงเมนูป๊อปอัป

ความคุ้มค่า: ระบุตัวเลือกที่เลือก

ชื่อหนังสือ: ชื่อเรื่องมีรูปแบบดังนี้: {ตัวเลือก 1|ตัวเลือก 2|...|ตัวเลือก N}"ตัวเลือก
1|ตัวเลือก 2|...|ตัวเลือก N" คือเมนูป๊อปอัปที่ปรากฏขึ้นเมื่อกดเมาส์
ปุ่ม

คุณสมบัติขนาดถูกละเว้น

ปุ่มกด: แสดงปุ่มกดพร้อมไอคอนและ/หรือสตริง

ชื่อหนังสือ: สตริงนี้มีไวยากรณ์ต่อไปนี้ {ชื่อปุ่ม|ตัวเลือก 1|ตัวเลือก
2|ตัวเลือก3|...|ตัวเลือก N}. "ตัวเลือก 1|ตัวเลือก 2|...|ตัวเลือก N" เป็นเมนูป๊อปอัปซึ่ง
จะปรากฏขึ้นเมื่อกดปุ่มขวา

ไอคอน: ไอคอนที่จะแสดง

ปุ่มมีขนาดใหญ่พอที่จะพอดีกับไอคอนและหรือป้ายกำกับ

ปุ่มวิทยุ: แสดงปุ่มตัวเลือกด้วยสตริง

ชื่อหนังสือ: ชื่อของปุ่มตัวเลือก

ความคุ้มค่า: ถ้าค่าเท่ากับ 1 ช่องจะถูกเลือก มิฉะนั้นจะไม่มี

คุณสมบัติขนาดถูกละเว้น

รูปสี่เหลี่ยมผืนผ้า: แสดงรูปสี่เหลี่ยมผืนผ้า
วิดเจ็ตประเภทนี้สามารถใช้ตกแต่งหน้าต่างได้

กลืนผู้บริหาร
วิดเจ็ตประเภทนี้ทำให้ FvwmScript วางไข่โปรเซส และจับภาพแรก
หน้าต่างที่มีชื่อหรือทรัพยากรเท่ากับ Title และแสดงในสคริปต์
หน้าต่าง

ชื่อหนังสือ: ระบุชื่อหน้าต่างที่จะจับภาพและแสดงในสคริปต์
หน้าต่าง

กลืนผู้บริหาร: ระบุบรรทัดคำสั่งที่จะดำเนินการเพื่อวางไข่กระบวนการ โมดูลสามารถ
ยังถูกกลืนกิน

ความคุ้มค่า: ระบุลักษณะเส้นขอบ ค่าที่เป็นไปได้: -1, 0, 1

ขนาดจะทำอย่างน้อย 30x30

ช่องข้อความ: แสดงช่องป้อนข้อความ
ช่องป้อนข้อความสามารถใช้แก้ไขสตริงบรรทัดเดียวได้

ชื่อหนังสือ: เนื้อหาของฟิลด์ข้อความ

ความคุ้มค่า: ตำแหน่งของจุดแทรก

ค่าต่ำสุด: ตำแหน่งของจุดสิ้นสุดของการเลือก

แม็กซ์แวลู: อักขระแรกที่มองเห็นได้ของชื่อเรื่อง

คุณสมบัติความสูงจะถูกละเว้น ความกว้างถูกทำให้กว้างขึ้นอย่างน้อย 40 พิกเซล
กว่าเนื้อหาเบื้องต้น

วีดิปสติ๊ก: แสดงก้านวัดระดับน้ำมันแนวตั้ง

ความคุ้มค่า: ระบุค่าปัจจุบันของก้านวัดระดับน้ำมัน

ค่าต่ำสุด: ระบุค่าต่ำสุดของก้านวัดน้ำมัน

แม็กซ์แวลู: ระบุค่าสูงสุดของก้านวัดระดับน้ำมัน

ขนาดจะทำอย่างน้อย 11x30

VSScrollBar: แสดงแถบเลื่อนแนวตั้ง

ความคุ้มค่า: ตำแหน่งของนิ้วหัวแม่มือ

แม็กซ์แวลู: ขีด จำกัด สูงสุดของมูลค่า

ค่าต่ำสุด: ขีดจำกัดล่างของมูลค่า

คุณสมบัติ width จะถูกละเว้นและกำหนดความสูงขั้นต่ำ ส่วนสูงควร
มีอย่างน้อยช่วงบวก 37 ถ้าค่าทั้งหมดจะสามารถเลือกได้ เช่น นาที 0
และสูงสุด 10 มีช่วงของ 11 ดังนั้นควรมีความสูงไม่ต่ำกว่า 48

คำแนะนำ


นี่คือคำอธิบายของคำแนะนำทั้งหมด

ซ่อนวิดเจ็ต id : ซ่อนวิดเจ็ตที่มีหมายเลข id.

แสดงวิดเจ็ต id: แสดงหมายเลขวิดเจ็ต id.

ค่าการเปลี่ยนแปลง id1 id2
ตั้งค่าของวิดเจ็ตหมายเลข id1 ไปยัง id2.

เปลี่ยนMaxValue id1 id2
ตั้งค่าสูงสุดของวิดเจ็ตหมายเลข id1 ไปยัง id2.

เปลี่ยนค่าต่ำสุด id1 id2
ตั้งค่าขั้นต่ำของวิดเจ็ตหมายเลข id1 ไปยัง id2.

เปลี่ยนชื่อ id1 id2
ตั้งชื่อของวิดเจ็ตที่มีหมายเลข id1 ไปยัง id2.

เปลี่ยนชื่อหน้าต่าง เชือก
ตั้งชื่อหน้าต่างเป็น เชือก.

เปลี่ยนWindowTitleFromArg นูมาร์
ตั้งชื่อหน้าต่างให้เป็นค่าของ นูมาร์อาร์กิวเมนต์สคริปต์ -th

เปลี่ยนLocaleTitle id1 id2
เป็น ChangeTitle แต่ใช้แค็ตตาล็อกโลแคลที่กำหนดด้วย UseGettext

เปลี่ยนไอคอน id1 id2
ตั้งไอคอนของวิดเจ็ตที่มีหมายเลข id1 ไปยัง id2.

เปลี่ยนสีหน้า id1 {สี}
ตั้งค่าสีพื้นหน้าของวิดเจ็ตที่มีหมายเลข id1 ถึง {สี}.

เปลี่ยนกลับสี id1 {สี}
ตั้งค่าสีพื้นหลังของวิดเจ็ตที่มีหมายเลข id1 ถึง {สี}.

เปลี่ยนสีชุด id1 id2
ตั้งค่าชุดสีของวิดเจ็ตที่มีหมายเลข id1 ไปยัง id2. การระบุวิดเจ็ต 0 ตั้งค่า
ชุดสีของหน้าต่างหลัก

เปลี่ยนตำแหน่ง id1 x y
ย้ายวิดเจ็ตหมายเลข id1 ไปยังตำแหน่ง (x,y).

เปลี่ยนขนาด id1 ความกว้าง ความสูง
กำหนดขนาดของวิดเจ็ตที่มีหมายเลข id1 ถึง (ความกว้าง,ความสูง).

เปลี่ยนแบบอักษร id1 แบบอักษรใหม่
ตั้งค่าแบบอักษรของวิดเจ็ตที่มีหมายเลข id1 ไปยัง แบบอักษรใหม่.

WarpPointer id
วาร์ปตัวชี้เมาส์ไปที่วิดเจ็ตหมายเลข id.

WriteToFile ชื่อไฟล์ {str1-str2} เป็นต้น
เขียนไปยังไฟล์ ชื่อไฟล์ สตริงที่เชื่อมอาร์กิวเมนต์ทั้งหมดเข้าด้วยกัน
str1, str2ฯลฯ

ทำ {คำสั่ง args}
ดำเนินการคำสั่ง fvwm ภายในบล็อก Do คำสั่ง fvwm ใด ๆ ตามที่อธิบายไว้ใน
สามารถใช้หน้าคน fvwm2 ได้ คำสั่งถูกส่งจากโมดูลนี้ไปยัง fvwm main
โปรแกรมสำหรับการประมวลผล ความยาวของคำสั่งและอาร์กิวเมนต์ต้องไม่เกิน 988
อักขระ

ตั้ง $คือ={Str1} {str2} เป็นต้น
เชื่อมอาร์กิวเมนต์ทั้งหมดเข้ากับสตริงและตั้งค่าตัวแปร $คือ ถึงสตริงนี้

ออก: ออกจากโปรแกรม

ส่งสัญญาณ id1 id2
ส่งข้อความหมายเลข id2 ไปที่วิดเจ็ต id1.

SendToScript id_script {str11} {str2} เป็นต้น
ส่งข้อความไปยังสคริปต์ที่ระบุโดย id_script ข้อความคือ
การต่อกันของ str1, str2...

คีย์ ชื่อคีย์ เปลี่ยนแปลง id sig str1 str2 ฯลฯ
ผูกแป้นคีย์บอร์ดกับคำสั่ง

ส่งสัญญาณ id sig

และตั้งค่า "สตริงสุดท้าย" เป็นการต่อกันของ str1, str2... (ดู
ฟังก์ชัน LastString) NS ชื่อคีย์ และ ตัวปรับเปลี่ยน ฟิลด์ถูกกำหนดเป็นในfvwm
คำสั่งที่สำคัญ

อาร์กิวเมนต์


คำสั่งส่วนใหญ่ใช้อาร์กิวเมนต์ อาร์กิวเมนต์มีสองประเภท: ตัวเลขและสตริง NS
อาร์กิวเมนต์ตัวเลขคือค่าที่อยู่ระหว่าง -32000 ถึง +32000 สตริงอยู่เสมอ
ล้อมรอบด้วยเหล็กดัดฟัน ตัวแปรขึ้นต้นด้วยอักขระ "$" เสมอ และสามารถมีได้ทั้งคู่
ตัวเลขและสตริง

ฟังก์ชั่น


ฟังก์ชันทั้งหมดใช้อาร์กิวเมนต์ ฟังก์ชั่นสามารถส่งคืนทั้งสตริงและตัวเลข ไวยากรณ์
คือ:
(ฟังก์ชัน อาร์กิวเมนต์1 อาร์กิวเมนต์2 เป็นต้น)
นี่คือรายการอาร์กิวเมนต์ทั้งหมด:

(รับชื่อเรื่อง id)
ส่งคืนชื่อวิดเจ็ตที่มีหมายเลข id.

(รับค่า id)
ส่งคืนค่าปัจจุบันของวิดเจ็ตที่มีหมายเลข id.

(GetMinValue id)
คืนค่า Min ปัจจุบันของวิดเจ็ตที่มีหมายเลข id.

(GetMaxValue id)
ส่งคืนค่า Max ปัจจุบันของวิดเจ็ตที่มีหมายเลข id.

(เก็ทฟอร์ id)
คืนค่า RGB เบื้องหน้าปัจจุบันของวิดเจ็ตหมายเลข id ในรูปแบบเลขฐานสิบหก
RRGGBB.

(กลับไป id)
ส่งคืนค่าพื้นหลัง RGB ปัจจุบันของวิดเจ็ตหมายเลข id ในรูปแบบเลขฐานสิบหก
RRGGBB.

(เก็ทไฮไลท์ id)
ส่งคืนค่า RGB hilight ปัจจุบันของวิดเจ็ตหมายเลข id ในรูปแบบเลขฐานสิบหก
RRGGBB.

(รับเงา id)
คืนค่าเงา RGB ปัจจุบันของวิดเจ็ตหมายเลข id ในรูปแบบเลขฐานสิบหก
RRGGBB.

(รับเอาท์พุต {Str} int1 int2)
ดำเนินการคำสั่ง Str, รับเอาต์พุตมาตรฐานและส่งคืนคำที่อยู่ใน
เส้น int1 และในตำแหน่ง int2. ถ้า int2 เท่ากับ -1 GetOutput ส่งคืน
เส้นที่สมบูรณ์

(NumToHex int)
ส่งกลับค่าฐานสิบหกของ int.

(HexToNum {Str})
ส่งกลับค่าทศนิยมของ Str, Str ต้องเป็นค่าเลขฐานสิบหก

(เพิ่ม int1 int2)
ส่งกลับผลลัพธ์ของ (int1+int2).

(หลาย int1 int2)
ส่งกลับผลลัพธ์ของ (int1*int2).

( Div int1 int2)
ส่งกลับผลลัพธ์ของ (int1/int2).

(StrCopy {Str} int1 int2)
ส่งกลับสตริงที่อยู่ระหว่างตำแหน่ง int1 และ int2 ตัวอย่างเช่น (StrCopy
{สวัสดี} 1 2) ส่งคืน {เขา}

(เรียกใช้สคริปต์ {Str})
ฟังก์ชันนี้เปิดใช้สคริปต์ชื่อ str และส่งคืนหมายเลขประจำตัว
ตัวเลขนี้จำเป็นต่อการใช้ฟังก์ชัน SendToScript และ ReceiveFromScript
สตริง str มีชื่อสคริปต์และอาร์กิวเมนต์บางตัว

(GetScriptArgument {int})
ฟังก์ชันนี้ส่งคืนสคริปต์อาร์กิวเมนต์ที่ใช้ในฟังก์ชัน LaunchScript ถ้า
int เท่ากับศูนย์ GetScriptArgument จะคืนค่าชื่อของสคริปต์

(GetScriptFather)
ฟังก์ชันนี้ส่งคืนหมายเลขประจำตัวของพ่อสคริปต์

(รับจากสคริปต์ {int})
ฟังก์ชันนี้ส่งคืนข้อความที่ส่งโดยสคริปต์ที่มีหมายเลข int

(ส่วนที่เหลือของ Div {int1 int2}): NS
ฟังก์ชันนี้จะคืนค่าส่วนที่เหลือของการหาร (int1/int2).

(รับเวลา)
ฟังก์ชันนี้จะคืนค่าเวลาเป็นวินาที

(เก็ทพิด)
ฟังก์ชันนี้ส่งคืนรหัสกระบวนการของสคริปต์

(รับข้อความ {Str})
ฟังก์ชันนี้ส่งคืนการแปลของ Str โดยใช้แคตตาล็อกสถานที่ที่กำหนดไว้
ด้วย UseGettext

(SendMsgAndGet {รหัสคอม-cmd} บูล)
ส่งคำสั่ง cmd พร้อมตัวระบุ รหัสคอม ไปยังโปรแกรมภายนอกที่พร้อมจะ
สื่อสารกับสคริปต์โดยใช้โปรโตคอลเฉพาะสำหรับ FvwmScript ถ้า บูล 0 เป็น
FvwmScript ไม่รอคำตอบจากโปรแกรมภายนอก ในกรณีนี้
ค่าที่ส่งคืนคือ 1 หากสามารถส่งข้อความไปยังโปรแกรมภายนอกและ 0 if
กรณีนี้ไม่ได้. ถ้า บูล คือ 1 จากนั้น FvwmScript จะรอคำตอบจาก
โปรแกรมภายนอกและค่าที่ส่งคืนคือคำตอบนี้ (บรรทัดไม่เกิน 32000
ตัวอักษร) ถ้าการสื่อสารล้มเหลว ค่าที่ส่งคืนคือ 0 ดูหัวข้อ
A การสื่อสาร มาตรการ สำหรับรายละเอียดของโปรโตคอลการสื่อสารที่ใช้

(แยกวิเคราะห์ {Str} int)
ที่ไหน Str ต้องเป็นสตริงของแบบฟอร์ม:
X1S1X2S2X3S3...SnXn
โดยที่ Xn คือตัวเลขที่มีทศนิยมสี่หลักและโดยที่ Sn เป็นสตริงของ
ยาวตรง Xn. ค่าที่ส่งคืนคือสตริง Sint. ถ้า int อยู่นอกช่วง
(เช่น >n) ค่าที่ส่งคืนคือสตริงว่าง ถ้า Str ไม่ได้ระบุไว้
แบบฟอร์ม มูลค่าที่ส่งคืนนั้นคาดเดาไม่ได้ (แต่ว่างเปล่าในค่าเฉลี่ย) ฟังก์ชั่นนี้
มีประโยชน์ในการจัดการสตริงที่ส่งคืนโดยฟังก์ชัน SendMsgAndGet

(สตริงสุดท้าย)
ฟังก์ชันนี้ส่งคืน "สตริงการทำงานปัจจุบัน" สำหรับคำสั่งคีย์และ
คำสั่ง SendString (ดูที่ คำสั่ง ส่วน). เมื่อเริ่มต้นสตริงนี้จะว่างเปล่า แต่
เมื่อตรวจพบการโยงคีย์ (ตามลำดับ จะได้รับคำสั่ง SendString)
จากนั้นสตริงนี้จะถูกตั้งค่าเป็นสตริงที่เกี่ยวข้องกับคำสั่ง (ตามลำดับ
ตามคำสั่ง)

เงื่อนไข ลูป


ลูปเงื่อนไขมีสามประเภท คำแนะนำ "ถ้า-แล้ว-อื่น" มี
ไวยากรณ์ต่อไปนี้:
ถ้า $ToDo=={Open xcalc} แล้ว
ทำ {Exec xcalc &} # รายการคำแนะนำ
อื่น
เริ่มต้น
ทำ {Exec killall xcalc &} # รายการคำแนะนำ
ทำ {Exec echo xcalc ถูกฆ่า > /dev/console}
ปลาย
ส่วนที่สอง "Else-Begin-End" เป็นทางเลือก ถ้าลูปมีคำสั่งเดียว
เริ่มต้นและสิ้นสุดสามารถละเว้นได้ คำแนะนำ "While-Do" มีไวยากรณ์ต่อไปนี้:
ในขณะที่ $i<5 Do
เริ่มต้น
Set $i=(Add i 1) # รายการคำสั่ง
ปลาย
สองสตริงสามารถเปรียบเทียบได้กับ "==" และตัวเลขสองตัวสามารถเปรียบเทียบได้กับ "<", "<=",
"==", ">=", ">" ลูป "For-Do-Begin-End" มีไวยากรณ์ต่อไปนี้:
สำหรับ $i=1 ถึง 20 Do
เริ่มต้น
ทำ {Exec xcalc &} # รายการคำแนะนำ
ปลาย

คำสั่ง


คำสั่ง fvwm ต่อไปนี้สามารถดำเนินการได้ตลอดเวลา

ส่งไปยังโมดูล ชื่อสคริปต์ ส่งสตริง id sig Str

มันส่งไปยังโมดูลใด ๆ ที่มีนามแฝงหรือชื่อที่ตรงกัน ชื่อสคริปต์ สตริง

ส่งสตริง id sig Str

เมื่อ FvwmScript ได้รับข้อความดังกล่าว มันจะส่งไปยัง Widget id สัญญาณหมายเลข
sig และสตริง Str สามารถรับได้ด้วยฟังก์ชัน LastString ให้เราให้
ตัวอย่าง. สมมติว่าคุณมีสคริปต์ MyScript พร้อมวิดเจ็ต:
วิดเจ็ต 50
อสังหาริมทรัพย์
พิมพ์ ปุ่มกด
ชื่อเรื่อง {ออก}
...
หลัก
ข้อความกรณีของ

ซิงเกิลคลิก:
เริ่มต้น
เลิก
ปลาย

1:
เริ่มต้น
ตั้งค่า $str = (LastString)
ถ้า $str == {Quit} แล้ว
เลิก
อื่น
เปลี่ยนหัวข้อ 33 $str
ปลาย

ปลาย
แล้วคำสั่ง
SendToModule MyScript SendString 50 1 สตริง
บังคับให้ MyScript ออกหาก str เท่ากับ "Quit" และถ้าไม่ใช่จะเปลี่ยนชื่อเป็น
วิดเจ็ต 33 ถึง str

คำสั่งนี้สามารถใช้เพื่อเปลี่ยนชื่อหน้าต่าง

ส่งไปยังโมดูล ชื่อสคริปต์ เปลี่ยนชื่อหน้าต่าง ชื่อใหม่ [ชื่อเก่า]

มันทำให้โมดูลใด ๆ ที่มีนามแฝงหรือชื่อที่ตรงกัน ชื่อสคริปต์ เปลี่ยนมัน
ชื่อหน้าต่างที่เกี่ยวข้องถึง ชื่อใหม่. อาร์กิวเมนต์ทางเลือก เก่าชื่อเรื่อง สมเหตุสมผลเมื่อมี
มีหลายอินสแตนซ์ของสคริปต์เดียวกัน อนุญาตให้บุคคลหนึ่งหลีกเลี่ยงการเปลี่ยนชื่อของ
อินสแตนซ์ทั้งหมดเหล่านี้โดยการระบุชื่อของหน้าต่างที่เกี่ยวข้องกับสคริปต์เป้าหมาย
(ดูตัวอย่างด้านล่าง)

+ ฉันโมดูล FvwmScript FvwmStorageSend "/ dev/hda6"
+ ฉันรอ FvwmStorageSend
+ ฉัน SendToModule FvwmStorageSend ChangeWindowTitle HDA6
+ ฉันโมดูล FvwmScript FvwmStorageSend "/ dev/hda1"
+ ฉันรอ FvwmStorageSend
+ ฉัน SendToModule FvwmStorage ส่ง ChangeWindowTitle HDA1 FvwmStorageSend

หากไม่มีอาร์กิวเมนต์ FvwmStorageSend ในกรณีสุดท้าย คำสั่ง SendToModule จะมี
เปลี่ยนเป็น HDA1 ชื่อของทั้งสองอินสแตนซ์ของ FvwmStorageSend

ตัวอย่าง


คุณจะพบตัวอย่างของสคริปต์ในไดเร็กทอรีการกำหนดค่า fvwm

FvwmScript-BellSetup, FvwmScript-KeyboardSetup, FvwmScript-PointerSetup และ FvwmScript-
ScreenSetup คือชุดของสคริปต์ที่แก้ไขการตั้งค่า X สคริปต์เหล่านี้บันทึกการตั้งค่า
ลงในไฟล์ชื่อ ~/.xinit-fvwmrc (หากต้องการใช้ชื่อไฟล์อื่น ให้ระบุเป็น
อาร์กิวเมนต์แรกของสคริปต์) หากคุณต้องการโหลดการตั้งค่าเหล่านี้ทุกครั้งที่เริ่มต้น
คุณต้องรวมบรรทัด ".xinit-fvwmrc" ไว้ในไฟล์ .xinitrc (หรือ .xsession) ก่อน
เริ่มต้น fvwm

FvwmScript-BaseConfig แก้ไขโฟกัส fvwm และนโยบายเมาส์เพจจิ้ง การจัดวางหน้าต่าง
ความทึบและคุณสมบัติอื่น ๆ ของคำสั่งย้ายและปรับขนาด การดึงดูดและการแรเงา
แอนิเมชั่น สคริปต์นี้บันทึกการกำหนดค่าตามความชอบลงในไฟล์ชื่อ .FvwmBaseConfig ในไฟล์ของผู้ใช้
ไดเร็กทอรีข้อมูล (เช่น $HOME/.fvwm หรือ $FVWM_USERDIR หากตั้งค่าไว้) หากคุณต้องการโหลดสิ่งเหล่านี้
การตั้งค่าทุกครั้งที่เริ่มต้น คุณต้องเพิ่มบรรทัด "อ่าน .FvwmBaseConfig" ใน fvwm ของคุณ
ไฟล์การกำหนดค่า หากคุณต้องการใช้ชื่อไฟล์อื่น ให้เป็นอาร์กิวเมนต์แรก
ของสคริปต์ เมื่อคุณคลิกตกลงหรือใช้ฟังก์ชัน fvwm ที่คุณอาจกำหนดชื่อ
BaseConfigOkFunc หรือ BaseConfigApplyFunc ถูกเรียก ทำให้สามารถรีโหลดได้เฉพาะ
รูปแบบแอปพลิเคชันที่สคริปต์ได้ทำลาย (เช่น AddToFunc BaseConfigOkFunc I Read
MyAppStyle)

FvwmScript-Buttons เป็นแผงปุ่มที่สามารถแทนที่ FvwmButtons (สคริปต์นี้รองรับ
เมนูป๊อปอัปและต้องใช้ xload, xclock, FvwmPager, TkDesk) FvwmScript-Colorset ช่วยให้
คุณแก้ไขชุดสีของคุณ (ดู FvwmTheme) FvwmScript-Date ให้คุณตั้งวันที่และ
เวลา. FvwmScript-FileBrowser เป็นไฟล์เบราว์เซอร์ที่ใช้โดยสคริปต์อื่น FvwmScript-
ค้นหาเป็นส่วนหน้าเบื้องต้นในการค้นหา FvwmScript-Quit อนุญาตให้ออกจาก fvwm, restart
fvwm หรือตัวจัดการหน้าต่างอื่น ๆ หรือปิดเครื่องและรีบูตคอมพิวเตอร์ FvwmScript-
ScreenDump เป็นดัมพ์หน้าจอ FvwmScript-WidgetDemo เป็นสคริปต์ตัวอย่างที่แท้จริง ดู
ส่วนถัดไปสำหรับ FvwmScript-ComExample

A การสื่อสาร มาตรการ


FvwmScript เป็นภาษาการเขียนโปรแกรมที่อ่อนแอ (แต่เรียบง่าย) หากคุณต้องการจัดการกับจำนวนมากของ
ข้อมูล และ/หรือ คุณจำเป็นต้องใช้อัลกอริธึมที่ซับซ้อน คุณควรใช้โปรแกรมภายนอก (ใน Perl
ตัวอย่างเช่น) และ "ส่ง" ข้อมูลที่ต้องการไปยังสคริปต์ FvwmScript ของคุณ ครั้งแรก
แนวทางคือการใช้ฟังก์ชัน GetOutput นี่เป็นเรื่องง่าย แต่คุณควรรัน your . อีกครั้ง
โปรแกรมภายนอกทุกครั้งที่คุณต้องการข้อมูลจากมัน (และสิ่งนี้อาจทำให้การแสดง
ปัญหา). วิธีที่สองคือการใช้ฟังก์ชัน SendMsgAndGet ซึ่งขยาย
FvwmScript โดยใช้ภาษาการเขียนโปรแกรมใด ๆ ที่สามารถจัดการกับไพพ์ที่มีชื่อ (fifos) เรา
อธิบายวิธีแก้ปัญหานี้ในส่วนนี้ (แนวทางที่สามคือการใช้ fvwm-themes-com from
แพ็คเกจ fvwm-themes แต่อันที่จริงเมธอด SendMsgAndGet นั้นเป็นการใช้งานของ
fvwm-themes-com ภายใน FvwmScript และสิ่งนี้ให้ประสิทธิภาพที่ดีขึ้น)

โดยทั่วไป คุณเริ่มโปรแกรม "ภายนอก" (โปรแกรมสั้นๆ) จาก FvwmScript . ของคุณ
สคริปต์ (สคริปต์สั้น ๆ ) โปรแกรมนี้ทำงานในพื้นหลังและคุณใช้
ฟังก์ชัน SendMsgAndGet ในสคริปต์ของคุณเพื่อถามคำถามหรือให้คำแนะนำแก่
โปรแกรม. โปรแกรมต้องเคารพโปรโตคอลการสื่อสารบางอย่างอย่างเคร่งครัด ครั้งแรกของ
ทั้งหมดมีตัวระบุ รหัสคอม สำหรับการสื่อสารนั้น ควรมีกระบวนการ id
ของสคริปต์เพื่อการใช้งานโปรโตคอลที่ดี (ใช้ฟังก์ชัน GetPid และ pass
รหัสคอม ผ่านตัวเลือกโปรแกรม) โปรโตคอลใช้สอง fifos ใน fvwm user
ไดเร็กทอรี ชื่อ: .tmp-com-in-รหัสคอม และ .tmp-com-out-รหัสคอม. โปรแกรมควรสร้างและ
ฟังใน .tmp-com-in-รหัสคอม ฟีโฟ จากนั้น เมื่อ FvwmScript รันฟังก์ชันของ
รูปแบบ:

ตั้งค่า $answer = (SendMsgAndGet {รหัสคอม-cmd} บูล)

FvwmScript เขียน cmd บนฟีฟ่านี้ วิธีนี้โปรแกรมสามารถอ่าน cmd และสามารถ
ดำเนินการตามความเหมาะสม (ควรลบ in fifo เพื่อรองรับ multi-
สื่อสาร) ถ้า บูล คือ 0, FvwmScript ไม่รอคำตอบจากโปรแกรมและ
คืนค่า 1 หากการกระทำก่อนหน้านี้สำเร็จและ 0 หากล้มเหลว (โปรแกรมควร "go
กลับ" ไปที่ใน fifo) ถ้า บูล คือ 1 จากนั้น FvwmScript จะรอ (20 วินาที) เพื่อรับคำตอบจาก
โปรแกรมและส่งคืนคำตอบของสคริปต์ (โปรดทราบว่า บูล ไม่ผ่านไปยัง
โปรแกรมที่ต้องรู้ว่าคำสั่งใดต้องการคำตอบ) ในการตอบโปรแกรมสร้าง
.tmp-com-out-รหัสคอม fifo แล้วเขียนคำตอบลงไป โปรแกรมควรรอจนกว่า
FvwmScript อ่านคำตอบแล้วจึงควรลบ out fifo และกลับไปที่in
ฟีโฟ คำตอบควรประกอบด้วยหนึ่งบรรทัดไม่เกิน 32000 อักขระ (ลองดูสิ
ที่ฟังก์ชัน Parse เพื่อจัดการหลายบรรทัดเป็นหนึ่งบรรทัด)

วิธีง่ายๆ ในการทำความเข้าใจโปรโตคอลนี้ และเขียนสคริปต์และโปรแกรมที่ใช้มันคือ
เพื่อดูตัวอย่าง (ไม่มีประโยชน์) FvwmScript-ComExample และ fvwm-script-
ComExample.pl (ที่สามารถพบได้ในไดเร็กทอรีข้อมูล fvwm) นอกจากนี้ การดำเนินการนี้
ของโปรโตคอลแก้คำถามเป็น: จะทำอย่างไรถ้าสคริปต์ออกด้วยเหตุผลที่ไม่ดี?
จะทำอย่างไรถ้าโปรแกรมออกด้วยเหตุผลที่ไม่ดี? ...ฯลฯ

ใช้ FvwmScript ออนไลน์โดยใช้บริการ onworks.net


เซิร์ฟเวอร์และเวิร์กสเตชันฟรี

ดาวน์โหลดแอพ Windows & Linux

คำสั่ง Linux

Ad




×
โฆษณา
❤️ช้อป จอง หรือซื้อที่นี่โดยไม่เสียค่าใช้จ่าย ช่วยให้บริการต่างๆ ฟรี