الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

Interfacing ports in Win2k & WinXP

مغلق
بدأه ikossan في 11 يناير 2005 · 3 رد · 1,544 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم و رحمة الله و بركاته.

تـحية عطرة لكل أعضاء المنتدى خاصة لكل من الصديقين JuStNiCk و سيف الدين 2/Saif_Omar و كذلك أخص بالشكر الأخ الساهر على هذا القسم من المنتدى عروة عيسى.. :lol:

كان بالإمكان في بيئة Win9x برمجة الهاردوير مباشرة مثل port ISA و LPT Ports و RS232 دون اللجوء إلى WinApi... لكن في ويندوز Xp و Win2k أصبحت كل محاولة التحكم بهذه المخارج الإلكترونية مستحيل بدون استخدام WinApi :s ..و دوال WinApi تحد من حرية التحكم و تقيدك ببروتوكولات خاصة تضيق خاصيات هذه المخارج :wacko: ...

الكود من مثل هذا أصبح خرقا في Windows 2000 &WinXP

{****************************************************************
 * Port Read byte function                                      *
 * Return:              byte value from given port              *
 ****************************************************************}
function PortIn(Addr:Word) : Byte; assembler; register;
 asm
  MOV    DX,AX
  IN     AL,DX
 end;
{****************************************************************
 * Procedure d'ecriture d'un octet sur le port E/S  *
 * Parametre: adresse du port, octet de sortie
 ****************************************************************}
procedure PortOut(Addr:Word; Value:Byte); assembler; register;
 asm
   XCHG AX,DX
   OUT  DX,AL
 end;

هذا مركب Component كنت قد قمت بتجميعه للتحكم بكل حرية في standard LPT port أو ما تعرف ب Parallel Port for printer.. و هو يعمل فقط على بيئة Windows 9x

LPT Port Component.zip

سأتغيب عن المنتدى وستكون لي زيارات خفيفة بين الحين و الحين

يا صاحب الهم إن الهم منفرج.....................أبشر بخير فإن الفارج الله.

اليأس يقطع أحيانا بصاحبه..........................لا تيأس فإن الكافي الله.

الله يحدث بعد العسر ميسرة.........................لا تفزعن فإن الصانع الله.

إذا بليت فثق بالله وارض به...................فإن الذي يكشف البلوى هو الله.

و الله ما لك غير الله من أحد.......................فحسبك الله في كل لك الله

أخوكم مراد

27_06_06_05_21_41_1151410901logo_adl_wal_ihsan.jpg

#2

المرجو المساعدة من لديه فكرة أو رابط :wacko:

سأتغيب عن المنتدى وستكون لي زيارات خفيفة بين الحين و الحين

يا صاحب الهم إن الهم منفرج.....................أبشر بخير فإن الفارج الله.

اليأس يقطع أحيانا بصاحبه..........................لا تيأس فإن الكافي الله.

الله يحدث بعد العسر ميسرة.........................لا تفزعن فإن الصانع الله.

إذا بليت فثق بالله وارض به...................فإن الذي يكشف البلوى هو الله.

و الله ما لك غير الله من أحد.......................فحسبك الله في كل لك الله

أخوكم مراد

27_06_06_05_21_41_1151410901logo_adl_wal_ihsan.jpg

#3

شكرا لك لهذه المشاركه القيمه ..

يوجد ملف DLL يمكن تنصيبه في System32 يسمح بعدها بإجراء هذه العمليات

كما يمكن حسب ما أظن أن نقوم بفتح سماحيات المستخدم للقيام بهذه العمليات بشكل مشابه لفتحه من اجل إيقاف تشغيل الجهاز , ولكني لم اجد مصادر مباشره أتبعت هذه الطريقه

...

شكرا , أرجو مواصله البحث عن حل كامل , وسأشارك معك إن شاء الله

function InPort(PortAddr: word): byte;
{$IFDEF WIN32}
assembler; stdcall;
asm
  mov dx,PortAddr
  in al,dx
end;
{$ELSE}
begin
  Result := Port[PortAddr];
end;
{$ENDIF}
#4

شكرا لك أخي Orwa...

لقد حصلت على نفس الحلول, وهي استعمال المكتبات Dll من قبيل WinNtIO.dll

لكني لم أحصل على أي كود مفتوح المصدر :s ..

مشكور يا أخي و إن شاء الله إن حصلت على هذا الكود سؤوافيك به

سأتغيب عن المنتدى وستكون لي زيارات خفيفة بين الحين و الحين

يا صاحب الهم إن الهم منفرج.....................أبشر بخير فإن الفارج الله.

اليأس يقطع أحيانا بصاحبه..........................لا تيأس فإن الكافي الله.

الله يحدث بعد العسر ميسرة.........................لا تفزعن فإن الصانع الله.

إذا بليت فثق بالله وارض به...................فإن الذي يكشف البلوى هو الله.

و الله ما لك غير الله من أحد.......................فحسبك الله في كل لك الله

أخوكم مراد

27_06_06_05_21_41_1151410901logo_adl_wal_ihsan.jpg

هذا الموضوع مغلق.

مواضيع مشابهة