تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
لمعرفة رسالة الخطأ الأخيرة بعد استدعاء دالة API (Last Error Message)
#1
كاتب الموضوع : Boutemine Oualid


كود :
// using System.Runtime.InteropServices;
[ DllImport( "kernel32.dll", CharSet = CharSet.Auto/*, SetLastError = true */ ) ]
private static extern uint FormatMessage
(
uint dwFlags,
IntPtr lpSource,
uint dwMessageId,
uint dwLanguageId,
ref IntPtr lpBuffer,
uint nSize,
IntPtr Arguments
);
public string GetLastWin32ErrorMessage( )
{
return GetLastWin32ErrorMessage( Marshal.GetLastWin32Error( ) );
}
public string GetLastWin32ErrorMessage( int errorCode )
{
IntPtr buffer = IntPtr.Zero;
uint cnt = FormatMessage
(
0x00000100 | // FORMAT_MESSAGE_ALLOCATE_BUFFER
0x00000200 | // FORMAT_MESSAGE_IGNORE_INSERTS
0x00001000, // FORMAT_MESSAGE_FROM_SYSTEM
IntPtr.Zero,
( uint )errorCode,
0, // LANGIDs : Neutral, Thread, User, System, en-US
ref buffer,
0,
IntPtr.Zero
);
if ( cnt == 0 || buffer == IntPtr.Zero )
return String.Format( "Unknown error: {0}.", errorCode );
string errorMessage = Marshal.PtrToStringAuto( buffer, ( int )cnt );
Marshal.FreeHGlobal( buffer ); // LocalFree.
return errorMessage;
}
VB.NET

كود :
<DllImport("kernel32.dll")> _
Public Function FormatMessage(ByVal dwFlags As Integer, ByRef lpSource As IntPtr, _
ByVal dwMessageId As Integer, ByVal dwLanguageId As Integer, ByRef lpBuffer As [String], _
ByVal nSize As Integer, ByRef Arguments As IntPtr) As Integer
End Function
Public Function GetErrorMessage(ByVal errorCode As Integer) As String
Dim FORMAT_MESSAGE_ALLOCATE_BUFFER As Integer = &H100
Dim FORMAT_MESSAGE_IGNORE_INSERTS As Integer = &H200
Dim FORMAT_MESSAGE_FROM_SYSTEM As Integer = &H1000
Dim msgSize As Integer = 255
Dim lpMsgBuf As String
Dim dwFlags As Integer = FORMAT_MESSAGE_ALLOCATE_BUFFER Or FORMAT_MESSAGE_FROM_SYSTEM Or FORMAT_MESSAGE_IGNORE_INSERTS
Dim lpSource As IntPtr = IntPtr.Zero
Dim lpArguments As IntPtr = IntPtr.Zero
'Call the FormatMessage function to format the message.
Dim returnVal As Integer = FormatMessage(dwFlags, lpSource, errorCode, 0, lpMsgBuf, _
msgSize, lpArguments)
If returnVal = 0 Then
Throw New Exception("Failed to format message for error code " + errorCode.ToString() + ". ")
End If
Return lpMsgBuf
End Function
}}}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  How To Create Public Message Abu Ehab 31 3,267 07-08-13, 01:22 PM
آخر رد: الشاكي لله
  دالة الجذر (تأتي بالجذر من أية درجة و لأي رقم) Aly El-Haddad 0 666 07-12-12, 03:53 PM
آخر رد: Aly El-Haddad
  دالة لفتح ملف نصي RaggiTech 0 343 17-10-12, 09:22 PM
آخر رد: RaggiTech
  لمعرفة هل نعمل ضمن بيئة 32 بت أو 64 بت برمجيا RaggiTech 0 355 17-10-12, 08:59 PM
آخر رد: RaggiTech
  استخدام مجال الأسماء My.Computer لمعرفة هل ازرارالوظائف تستخدم ام لاكزر Ctrl و خلافه RaggiTech 0 341 17-10-12, 06:59 PM
آخر رد: RaggiTech
  لمعرفة نسخة الفريم وورك التي يعمل عليها التطبيق RaggiTech 0 235 17-10-12, 06:18 PM
آخر رد: RaggiTech
  لمعرفة عنوان المجلد MyDocuments RaggiTech 0 218 17-10-12, 06:17 PM
آخر رد: RaggiTech
  لمعرفة حجم الذاكرة الحية الخاصة بكل Slot RaggiTech 0 313 17-10-12, 06:17 PM
آخر رد: RaggiTech
  لمعرفة حالة الاتصال بالانترنت RaggiTech 0 343 17-10-12, 06:16 PM
آخر رد: RaggiTech
  لمعرفة ان كانت السنة كبيسة أم لا RaggiTech 0 259 17-10-12, 06:16 PM
آخر رد: RaggiTech

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم