OLD FoxBoard
foxboard Home FoxBoard



ยินดีต้อนรับ Guest ลงทะเบียน Login ค้นหากระทู้ แสดงรายชื่อสมาชิก
 หัวข้อสนทนาทั้งหมด
  New Foxboard
 
ชื่อเรื่อง #04638 หัวข้อ: เตือนหรือป้องกันไม่ให้เปิดโปรแกรมซ้อน เชิญถาม-ตอบปัญหาได้ที่นี่ครับ ตั้งชื่อกระทู้ใหม่
ส่งข้อความโดย rjkman วันที่ 22 ม.ค. 2561 เวลา 21:47 น. - IP Logged
มุมมอง rjkman's ประวัติส่วนตัว ประวัติส่วนตัว   ค้นหากระทู้อื่นๆ rjkman ค้นหา   Quote rjkman Quote   Send Private Message ส่งข้อความ  
rjkman
Gold Member
Gold Member
Thailand
22 พ.ย. 2549
181 Posts
ไม่ทราบจะมีวิธีป้องกันไม่ให้มีการเปิดโปรแกรมเดียวกันที่ใช้งานซ้อนกัน 2 โปรแกรมไหมครับ เหตุเกิดจาก
1. ได้คลิ๊กเปิดโปรแกรมทำงานไว้ แล้วได้ย่อลงมาด้านล่างไว้
2. แล้วไปคลิ๊กเข้าโปรแกรมเดิมที่ไอคอนที่หน้าจอใหม่อีกครั้ง
   หากต้องการจะไม่ให้การเข้าโปรแกรมในครั้งที่ 2 ได้ จะป้องกันได้ไหมครับ

-------------
rjkman

ส่งข้อความโดย woof2000 วันที่ 23 ม.ค. 2561 เวลา 01:19 น. - IP Logged
มุมมอง woof2000's ประวัติส่วนตัว ประวัติส่วนตัว   ค้นหากระทู้อื่นๆ woof2000 ค้นหา   Quote woof2000 Quote   Send Private Message ส่งข้อความ  
woof2000
Avatar
Gold Member
Gold Member
Thailand
28 มิ.ย. 2554
582 Posts
มีแนวความคิดให้อยู่ 3 อย่างครับ

1. สร้าง Table สร้าง Field Last_Open AS Datetime
    แล้วให้โปรแกรม Update ทุกๆนาทีที่ Field นี้
    เมื่อมีการโปรแกรมใหม่ ให้โปรแกรมตรวจสอบ ที่ Field Last_Open
    ว่าผ่านมาแล้วกี่นาที
      - ถ้าไม่ถึงนาทีให้อนุมานว่าโปรแกรมเก่ายังทำงานอยู่
      - ถ้าผ่านไปเกินกว่า 1 นาทีแล้ว ให้อนุมานว่า โปรแกรมไม่ได้ทำงานอยู่แล้ว

2. ใช้วิธีสร้างไฟล์ชื่อ xxx.lock มาเพื่อแสดงว่าโปรแกรมยังทำงานอยู่
    และลบไฟล์ทิ้งหลังปิดโปรแกรม
    เวลาเปิดโปรแกรมขึ้นมาให้ตรวจสอบไฟล์ xxx.lock ว่า
      - ถ้ามีแสดงว่าโปรแกรมทำงานอยู่
      - ถ้าไม่มีแสดงว่าโปรแกรมไม่ได้ทำงานอยู่

3. ใช้โปรแกรม Windows API ช่วย
    http://fox.wikis.com/wc.dll?Wiki~ControllingTheNumberOfApplicationInstances

-------------
เริ่มจาก Foxbase เรื่อยมาจนถึง Visual Foxpro 9

ส่งข้อความโดย woof2000 วันที่ 24 ม.ค. 2561 เวลา 14:13 น. - IP Logged
มุมมอง woof2000's ประวัติส่วนตัว ประวัติส่วนตัว   ค้นหากระทู้อื่นๆ woof2000 ค้นหา   Quote woof2000 Quote   Send Private Message ส่งข้อความ  
woof2000
Avatar
Gold Member
Gold Member
Thailand
28 มิ.ย. 2554
582 Posts
นึกขึ้นได้ว่าผมเคยใช้วิธันั้ได้ผลชัดเจน ไม่มีผิดพลาด

เป็น Function สั้นๆ


loWMI = GETOBJECT("winmgmts:\\")
lob1 = loWMI.ExecQuery( "SELECT * FROM Win32_Process", , 48)
FOR EACH lobjItem IN lob1
     IF UPPER(lobjItem.Name) = UPPER("VFP9.EXE")
          MESSAGEBOX("I found VisualFox 9 running in your system.")
          EXIT
     ENDIF
NEXT
RELEASE lob1, lobjItem, loWMI


-------------
เริ่มจาก Foxbase เรื่อยมาจนถึง Visual Foxpro 9

ส่งข้อความโดย rjkman วันที่ 28 ม.ค. 2561 เวลา 18:53 น. - IP Logged
มุมมอง rjkman's ประวัติส่วนตัว ประวัติส่วนตัว   ค้นหากระทู้อื่นๆ rjkman ค้นหา   Quote rjkman Quote   Send Private Message ส่งข้อความ  
rjkman
Gold Member
Gold Member
Thailand
22 พ.ย. 2549
181 Posts
ต้องขอขอบคุณ คุณwoof2000 และท่านอื่น ๆ เป็นอย่างสูงนะครับ ที่ช่วยแนะนำแก้ปัญหาในทุกคำถามที่มีถามกันเข้ามาใน board

-------------
rjkman

ถ้าท่านต้องการตอบคำถามที่นี่ ท่านควรจะ  Login
ถ้าท่านยังไม่ได้ลงทะเบียน ท่านควรจะ  ลงทะเบียน

กระโดดไป เชิญถาม-ตอบปัญหาได้ที่นี่ครับ ตั้งชื่อกระทู้ใหม่
พิมพ์รายงาน พิมพ์รายงาน

Powered by Vfoxware Forums ver. 1.0
Copyright ©2006-2010 Vfoxware Guide