タグ付けされた質問 「pinvoke」

19
「同じ形式のプログラムを読み込もうとした」プラットフォームが同じでも
64ビットシステムの32ビットアンマネージDLLから関数を呼び出しています。私が得るものは: BadImageFormatException:不正な形式のプログラムを読み込もうとしました。(HRESULTからの例外:0x8007000B) 最初は、プロジェクトをAny CPUプラットフォームに設定していたので、両方をx86に変更しましたが、このエラーはまだ発生しています。これが本当に私が知っている唯一の修正です。 DLLは他のプログラム(ソースがない)で使用できるため、破損していません。依存関係が見つからないのではないかと思ったのですが、チェックしてみました。さらに、DllNotFoundExceptionその場合はをスローしませんか? 他に何ができますか?そして、「代わりに64ビットのアンマネージDLLを使用する」と言う前に、存在しないことを指摘しておきます。;)

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
UIオートメーションでのGoogle Chromeのアクセス可能なツリーキャッシュの問題
ユーザーがブラウザで下にスクロールしても、Google Chromeはユーザー補助要素(AutomationElement)を更新しません。 それを再現するには: を使用して、"chrome --force-render-accessibility"またはでグローバルアクセシビリティを設定して、レンダラーのアクセシビリティを有効にします "chrome://accessibility"。 行くhttp://en.wikipedia.org/wiki/Google (Windowsキットの)UIオートメーションモードでinspect.exeを開き、「関連記事へのリンク」要素を探します。 Chromeに戻り、下部にある[関連記事へのリンク]が表示されるまで下にスクロールします 「関連記事へのリンク」要素が画面外にマークされている Chromeに強制的に更新させる手動の解決策をいくつか見つけました。 ズームを90%に設定してから100%に戻します(非常に醜い方法です) アクセシビリティをオフにしてからオンに切り替える chrome://accessibility/ 私が探しているのは、これらの操作の1つをプログラムで実行する機能、またはChromeにキャッシュツリーを更新させる操作です。 私が試したこと: ウィンドウのサイズを変更 PInvoke/MoveWindow ウィンドウを再描画 PInvoke/Redrawwindow クロム拡張機能を作成し、オンデマンドでズームを100%に強制します:(chrome.tabs.setZoom(null, 0);機能しますが、点滅してウィンドウが遅くなります) これらはどれも正しく機能していません。 編集:Windows 7でGoogle Chrome 40.XX、41.XX、42.XX、43.XX、44.XX、45.XX、46.XX、47.XX.Dev、48.XX.Devでテスト済み。

17
DLLをロードできません(モジュールが見つかりませんHRESULT:0x8007007E)
.NET 4.0アプリケーションで使用する必要があるアンマネージC ++ APIコードを含むDLLライブラリがあります。しかし、私が自分の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はbin / debugフォルダーにあります) 私は自分のdllを(binフォルダーに依存するすべてのファイルとともに)コピーしました。 私もこのアプローチを試しましたが、同じエラーが発生しました: [DllImportAttribute(MyOwnLibDllPath, EntryPoint="TMproIni")] [return: MarshalAs(UnmanagedType.I4)] public static extern int MyproIni(string DBname, string DBuser_pass, string WorkDirectory, ref StringBuilder ErrorMessage); 助言がありますか?
113 c#  c++  dll  pinvoke 


9
259文字より長い名前のファイルを処理するにはどうすればよいですか?
私は、いくつかのディレクトリ内のすべてのファイルをウォークスルーし、それらのファイルに対していくつかのアクションを実行するアプリケーションに取り組んでいます。特に、ファイルサイズとこのファイルが変更された日付を取得する必要があります。 一部のファイルのフルネーム(ディレクトリ+ファイル名)が長すぎるため、(260文字)にFileInfo制限されている.NETFrameworkを使用できませんでしたMAX_PATH。多くのWebソースは、名前が長すぎるファイルにアクセスするために、P / Invokeを介してネイティブのWin32関数を使用することを推奨しています。 現在、Win32関数でもまったく同じ問題が発生しているようです。たとえば、GetFileAttributesEx(kernel32.dll)は、270バイトのパスに対してWin32エラー3ERROR_PATH_NOT_FOUNDで失敗します。 まったく同じファイルをNotepad2から正常に開き、Windowsエクスプローラーで正常に表示できます(ただし、たとえばVisual Studio 2010は、259文字の制限のために開くことができません¹)。 ファイルパスが270文字の場合にファイルにアクセスできるようにするにはどうすればよいですか? ノート: ファイルパスの長さが259文字を超えるファイルを削除または無視することは、解決策ではありません。 Unicode互換のソリューションのみを探しています。 このアプリケーションは、.NET Framework4がインストールされたWindows2008 / Vista以降で実行されます。 ¹驚いたことに、Microsoft Word 2007は失敗し、フロッピードライブがないコンピュータで「フロッピーディスクが小さすぎる」、または4 GBのRAMが残っているときに「RAMメモリが少ない」、または最後に「ウイルス対策ソフトウェア[...]を更新する必要があります」。彼らはいつの日か、少なくともMicrosoft Officeのような主要な製品で、そのようなばかげた意味のないエラーを表示するのをやめますか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.