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

19
“ มีความพยายามในการโหลดโปรแกรมด้วยรูปแบบที่ไม่ถูกต้อง” แม้ว่าแพลตฟอร์มจะเหมือนกันก็ตาม
ฉันกำลังเรียกใช้ฟังก์ชันจาก DLL ที่ไม่มีการจัดการ 32 บิตในระบบ 64 บิต สิ่งที่ฉันได้รับคือ: BadImageFormatException: มีความพยายามในการโหลดโปรแกรมด้วยรูปแบบที่ไม่ถูกต้อง (ข้อยกเว้นจาก HRESULT: 0x8007000B) ตอนแรกฉันตั้งโปรเจคของฉันเป็นแพลตฟอร์มใด ๆ ของ CPU ดังนั้นฉันจึงเปลี่ยนทั้งสองเป็น x86 แต่ข้อผิดพลาดนี้ยังคงเกิดขึ้น นั่นเป็นสิ่งเดียวที่ฉันรู้ในเรื่องนี้ DLLs ไม่เสียหายหรืออะไรเพราะฉันสามารถใช้พวกเขากับโปรแกรมอื่น ๆ (ที่ฉันไม่มีที่มา) ฉันคิดว่าบางทีมันอาจจะไม่ได้รับการอ้างอิง แต่ฉันตรวจสอบและพวกเขาทั้งหมดอยู่ที่นั่น นอกจากนี้จะไม่โยนDllNotFoundExceptionในกรณีนี้หรือไม่? ฉันจะทำอะไรได้อีก และก่อนที่คุณจะพูดว่า "ใช้ DLL ที่ไม่มีการจัดการ 64 บิตแทน" ให้ฉันชี้ให้เห็นว่าไม่มี ;)

18
นำหน้าต่างไปไว้ด้านหน้าใน WPF
ฉันจะนำแอปพลิเคชัน WPF ของฉันไปไว้ที่ด้านหน้าของเดสก์ท็อปได้อย่างไร จนถึงตอนนี้ฉันได้ลองแล้ว: SwitchToThisWindow(new WindowInteropHelper(Application.Current.MainWindow).Handle, true); SetWindowPos(new WindowInteropHelper(Application.Current.MainWindow).Handle, IntPtr.Zero, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE); SetForegroundWindow(new WindowInteropHelper(Application.Current.MainWindow).Handle); ไม่มีสิ่งใดที่กำลังทำงานอยู่ ( Marshal.GetLastWin32Error()กำลังบอกว่าการดำเนินการเหล่านี้เสร็จสมบูรณ์แล้วและมีคุณลักษณะ P / Invoke สำหรับแต่ละนิยามSetLastError=true) ถ้าฉันสร้างแอปพลิเคชั่น WPF ใหม่ที่ว่างเปล่าและโทรSwitchToThisWindowด้วยตัวจับเวลามันทำงานได้อย่างที่คาดหวังดังนั้นฉันไม่แน่ใจว่าทำไมมันไม่ทำงานในกรณีดั้งเดิมของฉัน แก้ไข : ฉันกำลังทำสิ่งนี้ร่วมกับฮอตคีย์ทั่วโลก
214 c#  .net  wpf  winapi  pinvoke 

2
ปัญหาต้นไม้แคชที่สามารถเข้าถึงได้ของ Google Chrome กับ UI Automation
Google Chrome จะไม่รีเฟรชองค์ประกอบการเข้าถึง ( AutomationElement ) เมื่อผู้ใช้เลื่อนลงในเบราว์เซอร์ ในการทำซ้ำ: เปิดใช้งานการเข้าถึง renderer กับ หรือโดยการตั้งค่าในการเข้าถึงทั่วโลกที่"chrome --force-render-accessibility""chrome://accessibility" ไปที่http://en.wikipedia.org/wiki/Google เปิดinspect.exeใน UI Automation Mode (จาก Windows Kits) ค้นหาองค์ประกอบ "ลิงก์ไปยังบทความที่เกี่ยวข้อง" กลับมาที่ Chrome เลื่อนลงจนกว่าจะเห็น "ลิงก์ไปยังบทความที่เกี่ยวข้อง" ที่ด้านล่าง องค์ประกอบ "ลิงก์ไปยังบทความที่เกี่ยวข้อง" ถูกทำเครื่องหมายบนหน้าจอ ฉันพบวิธีแก้ปัญหาด้วยตนเองที่สามารถบังคับให้ Chrome รีเฟรช: ตั้งค่าซูมเป็น 90% จากนั้นตั้งค่ากลับเป็น 100% (น่าเกลียดมาก ๆ ) ปิดการช่วยสำหรับการเข้าถึงจากนั้นเปิดใหม่ chrome://accessibility/ สิ่งที่ฉันกำลังมองหาคือความสามารถในการดำเนินการอย่างใดอย่างหนึ่งเหล่านี้โดยทางโปรแกรมหรือการดำเนินการใด ๆ ที่สามารถทำให้ Chrome รีเฟรชแคชทรี สิ่งที่ฉันได้ลอง: ปรับขนาดหน้าต่างด้วย …

17
ไม่สามารถโหลด DLL (ไม่พบโมดูล HRESULT: 0x8007007E)
ฉันมีไลบรารี dll ที่มีรหัส C ++ API ที่ไม่มีการจัดการฉันจำเป็นต้องใช้ในแอปพลิเคชัน. NET 4.0 ของฉัน แต่ทุกวิธีที่ฉันพยายามโหลด dll ของฉันฉันได้รับข้อผิดพลาด: ไม่สามารถโหลด DLL 'MyOwn.dll': ไม่พบโมดูลที่ระบุ (ข้อยกเว้นจาก HRESULT: 0x8007007E) ฉันได้อ่านและลองใช้โซลูชันของ Severa ที่พบบนอินเทอร์เน็ตแล้ว ไม่มีอะไรทำงาน .. ฉันได้ลองใช้วิธีการต่อไปนี้: [DllImport("MyOwn.dll", CallingConvention = CallingConvention.Cdecl)] [return: MarshalAs((UnmanagedType.I4))] public static extern Int32 MyProIni(string DBname, string DBuser_pass, string WorkDirectory, ref StringBuilder ErrorMessage); เมื่อฉันลองทำตามบทความนี้และเมื่อฉันเรียกใช้ตัวอย่างนี้ (จากรหัสที่ดาวน์โหลดมา) มันทำงานโดยไม่มีปัญหา (dll ที่ใช้อยู่ในโฟลเดอร์ …
113 c#  c++  dll  pinvoke 

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