คำถามติดแท็ก winapi

Windows API (เดิมเรียกว่า Win32 API) เป็นชุดหลักของอินเทอร์เฟซการเขียนโปรแกรมแอปพลิเคชันที่มีให้สำหรับระบบปฏิบัติการ Microsoft Windows แท็กนี้มีไว้สำหรับคำถามเกี่ยวกับการพัฒนาแอปพลิเคชัน Windows ดั้งเดิมโดยใช้ Windows API

15
ฉันจะหาไฟล์. emacs สำหรับ Emacs ที่ทำงานบน Windows ได้ที่ไหน
ฉันพยายามมองหาไฟล์. emacs สำหรับการติดตั้ง Windows สำหรับ Emacs แต่ไม่พบ มันมีชื่อไฟล์เดียวกันใน Windows เหมือนกับใน Unix หรือไม่? ฉันต้องสร้างมันขึ้นมาเอง? ถ้าใช่มันไปอยู่ภายใต้ไดเรกทอรีใด?


8
ค้นหาว่ากระบวนการใดที่ลงทะเบียนฮอตคีย์ทั่วโลก? (Windows API)
เท่าที่ฉันสามารถหาได้ Windows ไม่มีฟังก์ชั่น API เพื่อบอกว่าแอปพลิเคชันใดที่ลงทะเบียนฮอตคีย์ทั่วโลก (ผ่าน RegisterHotkey) ฉันพบได้เฉพาะว่ามีการลงทะเบียนฮอตคีย์หาก RegisterHotkey ส่งคืนเท็จ แต่ไม่ใช่ใคร "เป็นเจ้าของ" ฮอตคีย์ ในกรณีที่ไม่มี API โดยตรงมีทางอ้อมได้ไหม Windows ดูแลจัดการที่เกี่ยวข้องกับคีย์ลัดที่ลงทะเบียนแต่ละอัน - เป็นเรื่องที่น่าขันเล็กน้อยที่ไม่มีทางรับข้อมูลนี้ได้ ตัวอย่างของสิ่งที่ไม่น่าจะใช้งานได้: ส่ง (จำลอง) ฮ็อตคีย์ที่ลงทะเบียนจากนั้นดักจับข้อความฮอตที่ Windows จะส่งไปยังกระบวนการที่ลงทะเบียน อันดับแรกฉันไม่คิดว่าการดักฟังข้อความจะเปิดเผยที่จับหน้าต่างปลายทาง ประการที่สองแม้ว่าจะเป็นไปได้ แต่ก็เป็นเรื่องที่ไม่ดีที่จะทำเนื่องจากการส่งคีย์ลัดจะทำให้เกิดกิจกรรมที่ไม่พึงประสงค์ทุกประเภทจากโปรแกรมต่างๆ ไม่มีอะไรสำคัญ แต่ฉันเคยเห็นการร้องขอฟังก์ชันดังกล่าวบ่อยครั้งและฉันเองก็ตกเป็นเหยื่อของแอปพลิเคชันที่ลงทะเบียนคีย์ลัดโดยไม่เปิดเผยที่ใดก็ได้ใน UI หรือเอกสาร (ทำงานในเดลฟีและไม่มากไปกว่าเด็กฝึกงานที่ WinAPI โปรดเมตตา)

8
การเพิ่มไลบรารีภายนอกในโครงการ Qt Creator
ฉันจะเพิ่มไลบรารีภายนอกลงในโปรเจ็กต์ที่สร้างโดย Qt Creator RC1 (เวอร์ชัน 0.9.2) ได้อย่างไร ตัวอย่างเช่นEnumProcesses()ต้องPsapi.libเพิ่มฟังก์ชัน win32 ในโปรเจ็กต์เพื่อสร้าง
112 c++  winapi  qt  qt-creator 

12
ตรวจสอบว่าเส้นทางถูกต้องหรือไม่
ฉันแค่สงสัย: ฉันกำลังมองหาวิธีตรวจสอบว่าเส้นทางนั้นถูกต้องหรือไม่ (หมายเหตุ: ฉันไม่ต้องการที่จะตรวจสอบว่าไฟล์ที่มีอยู่เป็นฉันเพียงต้องการที่จะพิสูจน์ความถูกต้องของเส้นทาง - ดังนั้นถ้าไฟล์ที่อาจจะอยู่ในสถานที่) ปัญหาคือฉันไม่พบสิ่งใดใน. Net API เนื่องจากมีรูปแบบและตำแหน่งมากมายที่ Windows รองรับฉันจึงควรใช้ MS-native เนื่องจากฟังก์ชันควรสามารถตรวจสอบกับ: เส้นทางสัมพัทธ์ (./) เส้นทางสัมบูรณ์ (c: \ tmp) UNC-Pathes (\ some-pc \ c $) NTFS- ข้อ จำกัด เช่นเส้นทางแบบเต็ม 1024 ตัวอักษร - ถ้าฉันไม่เข้าใจผิดเกินพา ธ จะทำให้ไฟล์ไม่สามารถเข้าถึงได้สำหรับฟังก์ชั่นภายในของ Windows จำนวนมาก การเปลี่ยนชื่อด้วย Explorer ยังคงใช้งานได้ เส้นทาง GUID ของไดรฟ์ข้อมูล: "\? \ Volume {GUID} \ somefile.foo …
110 c#  .net  winapi  path 

4
การส่งออกฟังก์ชันจาก DLL ด้วย dllexport
ฉันต้องการตัวอย่างง่ายๆในการส่งออกฟังก์ชันจาก C ++ Windows DLL ฉันต้องการดูส่วนหัว.cppไฟล์และ.defไฟล์ (ถ้าจำเป็นจริงๆ) ฉันต้องการชื่อที่ส่งออกจะได้รับการประดับประดา ฉันต้องการใช้รูปแบบการโทรที่เป็นมาตรฐานที่สุด ( __stdcall?) ฉันต้องการใช้__declspec(dllexport)และไม่ต้องใช้.defไฟล์ ตัวอย่างเช่น: //header extern "C" { __declspec(dllexport) int __stdcall foo(long bar); } //cpp int __stdcall foo(long bar) { return 0; } ฉันพยายามหลีกเลี่ยงตัวเชื่อมโยงที่เพิ่มขีดล่างและ / หรือตัวเลข (จำนวนไบต์?) ให้กับชื่อ ฉันไม่เป็นไรที่ไม่สนับสนุนdllimportและdllexportใช้ส่วนหัวเดียวกัน ฉันไม่ต้องการข้อมูลใด ๆ เกี่ยวกับการเอ็กซ์พอร์ตเมธอดคลาส C ++ เพียงแค่ฟังก์ชันโกลบอลสไตล์ c อัปเดต ไม่รวมหลักการเรียก (และการใช้งานextern "C") ให้ชื่อส่งออกตามที่ฉันต้องการ …

6
ปั๊มข้อความคืออะไร?
ในชุดข้อความนี้ (โพสต์เมื่อประมาณหนึ่งปีที่แล้ว) มีการอภิปรายเกี่ยวกับปัญหาที่อาจมาพร้อมกับการรัน Word ในเซสชันที่ไม่โต้ตอบ คำแนะนำ (ค่อนข้างรัดกุม) ที่ให้ไว้นั้นไม่ควรทำเช่นนั้น ในโพสต์หนึ่งมีการระบุว่า "Office API ทั้งหมดถือว่าคุณใช้งาน Office ในเซสชันแบบโต้ตอบบนเดสก์ท็อปด้วยจอภาพแป้นพิมพ์และเมาส์และที่สำคัญที่สุดคือปั๊มข้อความ" ฉันไม่แน่ใจว่ามันคืออะไร (ฉันเขียนโปรแกรมใน C # มาได้ประมาณหนึ่งปีเท่านั้นประสบการณ์การเขียนโปรแกรมอื่น ๆ ของฉันส่วนใหญ่มาจาก ColdFusion) อัปเดต: โปรแกรมของฉันทำงานผ่านไฟล์ RTF จำนวนมากเพื่อดึงข้อมูลสองส่วนที่ใช้สร้างหมายเลขรายงานทางการแพทย์ แทนที่จะลองดูว่าคำแนะนำการจัดรูปแบบใน RTF ทำงานอย่างไรฉันตัดสินใจเปิดใน Word และดึงข้อความออกจากที่นั่น (โดยไม่ต้องเริ่ม GUI จริง ๆ ) ในบางครั้งโปรแกรมเกิดอาการสะอึกระหว่างการประมวลผลไฟล์เดียวและเปิดเธรด Word ที่แนบมากับเอกสารนั้นทิ้งไว้ (ฉันยังต้องหาวิธีปิดไฟล์นั้น) เมื่อฉันรันโปรแกรมอีกครั้งแน่นอนว่าฉันได้รับการแจ้งเตือนว่ามีเธรดที่ใช้ไฟล์นั้นและฉันต้องการเปิดสำเนาแบบอ่านอย่างเดียวหรือไม่? เมื่อฉันตอบว่าใช่ Word GUI ก็โผล่ขึ้นมาจากที่ไหนเลยและเริ่มประมวลผลไฟล์ ฉันสงสัยว่าทำไมมันถึงเกิดขึ้น

15
การสร้างรหัสเครื่องเฉพาะ
ฉันต้องเขียนฟังก์ชันที่สร้าง id ที่ไม่ซ้ำกันสำหรับเครื่องที่ใช้ Windows OS ขณะนี้ฉันใช้ WMI เพื่อค้นหาพารามิเตอร์ฮาร์ดแวร์ต่างๆและเชื่อมต่อเข้าด้วยกันและแฮชเพื่อรับ id เฉพาะ คำถามของฉันคืออะไรคือพารามิเตอร์ที่แนะนำที่ฉันควรใช้? ขณะนี้ฉันกำลังใช้ข้อมูลไบออส cpu \ disk ร่วมกันเพื่อสร้าง id เฉพาะ และกำลังใช้ผลลัพธ์แรกหากมีผลลัพธ์หลายรายการสำหรับแต่ละเมตริก อย่างไรก็ตามฉันพบปัญหาที่เครื่องที่บู๊ตคู่ใน 2 ระบบปฏิบัติการ Windows ที่แตกต่างกันสร้างรหัสไซต์ที่แตกต่างกันในแต่ละระบบปฏิบัติการซึ่งไม่ควรเกิดขึ้น สำหรับการอ้างอิงนี่คือเมตริกที่ฉันกำลังใช้: Win32_Processor:UniqueID,ProcessorID,Name,Manufacturer,MaxClockSpeed Win32_BIOS:Manufacturer Win32_BIOS:SMBIOSBIOSVersion,IdentificationCode,SerialNumber,ReleaseDate,Version Win32_DiskDrive:Model, Manufacturer, Signature, TotalHeads Win32_BaseBoard:Model, Manufacturer, Name, SerialNumber Win32_VideoController:DriverVersion, Name

9
จะสร้างบริบทการแสดงผล OpenGL ที่มีพื้นหลังโปร่งใสได้อย่างไร
บริบทการแสดงผลมักจะมีสีทึบบนพื้นหลัง (สีดำหรืออะไรก็ตามดูภาพด้านล่าง): ฉันสงสัยว่าเป็นไปได้หรือไม่ที่จะตั้งค่าหน้าต่างโดยไม่มีการตกแต่งและมีพื้นหลังโปร่งใสในขณะที่อนุญาตให้ฉันแสดงสิ่งต่างๆของ OpenGL ได้ สิ่งนี้จะทำให้ภาพลวงตาว่าสามเหลี่ยมลอยอยู่บนหน้าจอ พื้นหลังโปร่งใสควรช่วยให้คุณเห็นเดสก์ท็อปหรือแอปพลิเคชันอื่น ๆ ที่อาจอยู่เบื้องหลัง คุณช่วยยกตัวอย่างด้วยซอร์สโค้ดได้ไหม แพลตฟอร์ม: Windows (win32 เท่านั้น)
101 c  winapi  opengl  transparency 

9
ฉันจะพิมพ์ไปยังหน้าต่างผลลัพธ์การแก้ไขข้อบกพร่องในแอป Win32 ได้อย่างไร
ฉันมีโปรเจ็กต์ win32 ที่ฉันโหลดลงใน Visual Studio 2005 ฉันต้องการที่จะสามารถพิมพ์สิ่งต่าง ๆ ไปยังหน้าต่างเอาต์พุต Visual Studio แต่ฉันทำไม่ได้ตลอดชีวิตของฉัน ฉันได้ลอง 'printf' และ 'cout <<' แล้ว แต่ข้อความของฉันยังคงไม่ได้พิมพ์ออกมา มีวิธีพิเศษในการพิมพ์ไปยังหน้าต่างเอาต์พุต Visual Studio หรือไม่?

10
gettimeofday () รับประกันความละเอียดระดับไมโครวินาทีหรือไม่
ฉันกำลังพอร์ตเกมซึ่งเดิมเขียนขึ้นสำหรับ Win32 API ไปยัง Linux (ดีคือพอร์ต OS X ของพอร์ต Win32 ไปยัง Linux) ฉันได้ดำเนินการQueryPerformanceCounterโดยให้ uSeconds ตั้งแต่เริ่มกระบวนการ: BOOL QueryPerformanceCounter(LARGE_INTEGER* performanceCount) { gettimeofday(&currentTimeVal, NULL); performanceCount->QuadPart = (currentTimeVal.tv_sec - startTimeVal.tv_sec); performanceCount->QuadPart *= (1000 * 1000); performanceCount->QuadPart += (currentTimeVal.tv_usec - startTimeVal.tv_usec); return true; } สิ่งนี้ควบคู่ไปกับการQueryPerformanceFrequency()ให้ความถี่คงที่ 1000000 ทำงานได้ดีบนเครื่องของฉันทำให้ฉันมีตัวแปร 64 บิตที่มีuSecondsตั้งแต่เริ่มต้นโปรแกรม ดังนั้นนี้เป็นแบบพกพา? ฉันไม่ต้องการที่จะค้นพบว่ามันทำงานแตกต่างออกไปหากเคอร์เนลถูกคอมไพล์ด้วยวิธีใดวิธีหนึ่งหรืออะไรทำนองนั้น อย่างไรก็ตามฉันสบายดีที่ไม่สามารถพกพาไปยังสิ่งอื่นที่ไม่ใช่ Linux ได้

8
วิธีการเขียน hello world ในแอสเซมเบลอร์ภายใต้ Windows
ฉันต้องการเขียนสิ่งพื้นฐานในการประกอบใน Windows ฉันใช้ NASM แต่ฉันไม่สามารถทำงานอะไรได้เลย จะเขียนและรวบรวมสวัสดีชาวโลกโดยไม่ใช้ฟังก์ชัน C บน Windows ได้อย่างไร?
94 winapi  assembly  x86  nasm 

3
LPCWSTR ย่อมาจากอะไรและควรจัดการอย่างไร?
ก่อนอื่นมันคืออะไรกันแน่? ฉันเดาว่ามันเป็นตัวชี้ (LPC หมายถึงค่าคงที่ตัวชี้แบบยาว) แต่ "W" หมายถึงอะไร? เป็นตัวชี้เฉพาะไปยังสตริงหรือตัวชี้ไปยังสตริงเฉพาะหรือไม่? ตัวอย่างเช่นฉันต้องการปิดหน้าต่างชื่อ "TestWindow" HWND g_hTest; LPCWSTR a; *a = ("TestWindow"); g_hTest = FindWindowEx(NULL, NULL, NULL, a); DestroyWindow(g_hTest); รหัสนี้ผิดกฎหมายและใช้ไม่ได้เนื่องจาก const char [6] ไม่สามารถแปลงเป็น CONST WCHAR ได้ ฉันไม่เข้าใจเลย ฉันต้องการทำความเข้าใจที่ชัดเจนเกี่ยวกับ LPCWSTR, LPCSTR, LPSTR เหล่านี้ ฉันพยายามค้นหาบางสิ่ง แต่ฉันก็สับสนมากขึ้น ที่ไซต์ msdn FindWindowExถูกประกาศเป็น HWND FindWindowEx( HWND hwndParent, HWND hwndChildAfter, LPCTSTR …
91 c++  winapi  lpcstr 

8
วิธีอ่านค่าจากรีจิสทรีของ Windows
ระบุคีย์สำหรับค่ารีจิสทรีบางอย่าง (เช่น HKEY_LOCAL_MACHINE \ blah \ blah \ blah \ foo) ฉันจะทำอย่างไร: ตรวจสอบอย่างปลอดภัยว่ามีคีย์ดังกล่าวอยู่ โดยทางโปรแกรม (เช่นด้วยรหัส) จะได้รับค่าของมัน ฉันไม่มีความตั้งใจที่จะเขียนอะไรกลับไปที่รีจิสตรี (ในช่วงอาชีพของฉันถ้าฉันสามารถช่วยได้) ดังนั้นเราสามารถข้ามการบรรยายเกี่ยวกับทุกอณูในร่างกายของฉันที่ระเบิดด้วยความเร็วแสงถ้าฉันเขียนลงในรีจิสทรีไม่ถูกต้อง ต้องการคำตอบใน C ++ แต่ส่วนใหญ่เพียงแค่ต้องรู้ว่าคาถา Windows API พิเศษที่จะได้รับคืออะไร
91 c++  windows  winapi  registry 

8
ฉันจะรับรายชื่อไปป์ที่เปิดชื่อทั้งหมดใน Windows ได้อย่างไร
มีวิธีง่ายๆในการทดสอบว่าท่อที่ตั้งชื่อของคุณทำงานถูกต้องหรือไม่? ฉันต้องการตรวจสอบให้แน่ใจว่ามีการส่งข้อมูลที่ฉันกำลังส่งจากแอปของฉันอยู่จริง มีวิธีที่ง่ายและรวดเร็วในการรับรายการท่อที่มีชื่อทั้งหมดหรือไม่?
91 windows  winapi  pipe 

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.