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

شرح الاتصال بماكينات الحضور والانصراف الكارت والبصمه كود سى شارب

بدأه alhlwan في 25 أغسطس 2013 · 8 رد · 4,341 مشاهدة · في ASP.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمه الله
الإخوه الأفاضل بعد بحث طويل وجدت أن هذا الموضوع نادر جدا على محركات البحث وقليل جدا من هم تكلمو عنه او رفعو حلول له وبعد طول عناء تم التوصل الى الحل بالكامل ومستعد بعون الله مساعده الجميع اذا ظهرت مشاكل سواءا بالتليفون الشخصى او الميل قد قمت بوضع الشرح فى ملف بى دى اف فى المرفقات مع ملفات الدى ال ال المطلوبه للمشروع وسوف اقوم بوضع الرح بالكامل فى الموضوع تحسبا لحدوث صعوبه فى تحميل ملف البى دى اف
اخوكم فى الله محمد عبد المرضى الحلوانى مصر 01224710999 ميل Moh.abdelmordy.it@gmail.com
الاتصال عن طريق IP And Mac Port

أسأل الله تعالى أن يتقبل هذا العمل ويأجرنى عليه ويكون ذكاه علم لى
الإتصال بأى ماكينه حضور وإنصراف سواء بالكارت أو بالبصمه فالتعامل ثابت لا يتغير ملحوظه قاعده البيانات سيكول سيرفر SQL Server
البدايه
سيتم فى البدايه اعداد وانشاء الجداول والاستورد بروسيدجر
أولا:- بناء الجداول اللازمه للإتصال وهما عباره عن جدولين
الأول :- جدول يضاف فيه كل حركات الماكينه بكل الحقول وسيكون اسمه HR_InOut_Tbl
الثانى :- جدول يضاف فيه حركات الماكينه الجديده ففى الخطوات القادمه سنلاحظ إنه عند كل اتصال وتحميل للبيانات سيتم كل الحركات من على الماكينه وسيتم ذلك على الجدول الأول أما الجدول الثانى فهو لإضاف السطور الجديده او الاحداث الجديده على الماكينه والبيانات القديمه محفوظه ايضا فيه وسنرى كيف يتم ذلك

كود انشاء الجدول الأول HR_InOut_Tbl

CREATE TABLE [dbo].[HR_InOut_Tbl](
	[IDD] [int] IDENTITY(1,1) NOT NULL,
	[dwEnrollNumber] [int] NULL,
	[name] [nvarchar](50) NULL,
	[password] [nvarchar](50) NULL,
	[privileg] [int] NULL,
	[dwVerifyMode] [int] NULL,
	[dwInOutMode] [int] NULL,
	[timeStr] [nvarchar](50) NULL,
	[_machineNumber] [int] NULL,
	[_enrollNumber] [int] NULL,
	[_enrollMachineNumber] [int] NULL,
	[_verifyMode] [int] NULL,
	[_inOutMode] [int] NULL,
	[_year] [int] NULL,
	[_month] [int] NULL,
	[_day] [int] NULL,
	[_hour] [int] NULL,
	[_minute] [int] NULL,
 CONSTRAINT [PK_HR_InOut_Tbl] PRIMARY KEY CLUSTERED 
(
	[IDD] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

كود انشاء الجدول الثانى HR_InOutAct_Tbl

CREATE TABLE [dbo].[HR_InOut_Tbl](
	[IDD] [int] IDENTITY(1,1) NOT NULL,
	[dwEnrollNumber] [int] NULL,
	[name] [nvarchar](50) NULL,
	[password] [nvarchar](50) NULL,
	[privileg] [int] NULL,
	[dwVerifyMode] [int] NULL,
	[dwInOutMode] [int] NULL,
	[timeStr] [nvarchar](50) NULL,
	[_machineNumber] [int] NULL,
	[_enrollNumber] [int] NULL,
	[_enrollMachineNumber] [int] NULL,
	[_verifyMode] [int] NULL,
	[_inOutMode] [int] NULL,
	[_year] [int] NULL,
	[_month] [int] NULL,
	[_day] [int] NULL,
	[_hour] [int] NULL,
	[_minute] [int] NULL,
 CONSTRAINT [PK_HR_InOut_Tbl] PRIMARY KEY CLUSTERED 
(
	[IDD] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

ثانيا :- بناء كويرى لجلب البيانات التى لم تضاف فى الجدول الثانى HR_InOutAct_Tbl
وكود انشائها

SELECT        dbo.HR_InOut_Tbl.dwEnrollNumber, dbo.HR_InOut_Tbl.name, dbo.HR_InOut_Tbl.password, dbo.HR_InOut_Tbl.privileg, dbo.HR_InOut_Tbl.dwVerifyMode, 
                         dbo.HR_InOut_Tbl.dwInOutMode, dbo.HR_InOut_Tbl.timeStr, dbo.HR_InOut_Tbl._machineNumber, dbo.HR_InOut_Tbl._enrollNumber, 
                         dbo.HR_InOut_Tbl._enrollMachineNumber, dbo.HR_InOut_Tbl._verifyMode, dbo.HR_InOut_Tbl._inOutMode, dbo.HR_InOut_Tbl._year, 
                         dbo.HR_InOut_Tbl._month, dbo.HR_InOut_Tbl._day, dbo.HR_InOut_Tbl._hour, dbo.HR_InOut_Tbl._minute
FROM            dbo.HR_InOut_Tbl LEFT OUTER JOIN
                         dbo.HR_InOutAct_Tbl ON dbo.HR_InOut_Tbl.dwEnrollNumber = dbo.HR_InOutAct_Tbl.dwEnrollNumber AND 
                         dbo.HR_InOut_Tbl.name = dbo.HR_InOutAct_Tbl.name AND dbo.HR_InOut_Tbl.password = dbo.HR_InOutAct_Tbl.password AND 
                         dbo.HR_InOut_Tbl.privileg = dbo.HR_InOutAct_Tbl.privileg AND dbo.HR_InOut_Tbl.dwVerifyMode = dbo.HR_InOutAct_Tbl.dwVerifyMode AND 
                         dbo.HR_InOut_Tbl.dwInOutMode = dbo.HR_InOutAct_Tbl.dwInOutMode AND dbo.HR_InOut_Tbl.timeStr = dbo.HR_InOutAct_Tbl.timeStr AND 
                         dbo.HR_InOut_Tbl._machineNumber = dbo.HR_InOutAct_Tbl._machineNumber AND dbo.HR_InOut_Tbl._inOutMode = dbo.HR_InOutAct_Tbl._inOutMode AND 
                         dbo.HR_InOut_Tbl._verifyMode = dbo.HR_InOutAct_Tbl._verifyMode AND 
                         dbo.HR_InOut_Tbl._enrollMachineNumber = dbo.HR_InOutAct_Tbl._enrollMachineNumber AND 
                         dbo.HR_InOut_Tbl._enrollNumber = dbo.HR_InOutAct_Tbl._enrollNumber AND dbo.HR_InOut_Tbl._year = dbo.HR_InOutAct_Tbl._year AND 
                         dbo.HR_InOut_Tbl._month = dbo.HR_InOutAct_Tbl._month AND dbo.HR_InOut_Tbl._day = dbo.HR_InOutAct_Tbl._day AND 
                         dbo.HR_InOut_Tbl._hour = dbo.HR_InOutAct_Tbl._hour AND dbo.HR_InOut_Tbl._minute = dbo.HR_InOutAct_Tbl._minute
WHERE        (dbo.HR_InOutAct_Tbl._minute IS NULL)
GROUP BY dbo.HR_InOut_Tbl.dwEnrollNumber, dbo.HR_InOut_Tbl.name, dbo.HR_InOut_Tbl.password, dbo.HR_InOut_Tbl.privileg, dbo.HR_InOut_Tbl.dwVerifyMode, 
                         dbo.HR_InOut_Tbl.dwInOutMode, dbo.HR_InOut_Tbl.timeStr, dbo.HR_InOut_Tbl._machineNumber, dbo.HR_InOut_Tbl._enrollNumber, 
                         dbo.HR_InOut_Tbl._enrollMachineNumber, dbo.HR_InOut_Tbl._verifyMode, dbo.HR_InOut_Tbl._inOutMode, dbo.HR_InOut_Tbl._year, 
                         dbo.HR_InOut_Tbl._month, dbo.HR_InOut_Tbl._day, dbo.HR_InOut_Tbl._hour, dbo.HR_InOut_Tbl._minute

ثم قم بحفظ الفيو بإسم Vew_AllMacData
ثالثا : بناء الاستورد بروسيدجر اللازمه
1- ستورد بروسيدجر لاضافه الحركات من الماكينه فى الجدول الاول HR_InOut_Tbl
2- ستورد بروسيدجر لاضافه البيانات الجديده التى لم تضاف فى الجدول الثانى HR_InOutAct_Tbl

كود انشاء الاستورد بروسيدجر الاولى AddGdata

CREATE PROCEDURE dbo.AddGdata
	(
	@dwEnrollNumber Int,
	@name nvarchar(50),
	@password nvarchar(50),
	@privileg Int,
	@dwVerifyMode Int,
	@dwInOutMode Int,
	@timeStr nvarchar(50),
	@_machineNumber int,
	@_enrollNumber int,
	@_enrollMachineNumber int,
	@_verifyMode int,
	@_inOutMode int,
	@_year int,
	@_month int,
	@_day int,
	@_hour int,
	@_minute int
	)
AS
delete from HR_InOut_Tbl
	insert into HR_InOut_Tbl   
	(dwEnrollNumber,[name],password,privileg,dwVerifyMode,dwInOutMode,timeStr,_machineNumber,_enrollNumber,_enrollMachineNumber,_verifyMode,_inOutMode,_year,_month,_day,_hour,_minute)
	values
	(@dwEnrollNumber,@name,@password,@privileg,@dwVerifyMode,@dwInOutMode,@timeStr,@_machineNumber,@_enrollNumber,@_enrollMachineNumber,@_verifyMode,@_inOutMode,@_year,@_month,@_day,@_hour,@_minute)
	RETURN

كود انشاء الاستورد بروسيدجر الثانيه AddActdata

CREATE PROCEDURE dbo.AddActdata
	
AS

	insert into HR_InOutAct_Tbl   
	(dwEnrollNumber,[name],password,privileg,dwVerifyMode,dwInOutMode,timeStr,_machineNumber,_enrollNumber,_enrollMachineNumber,_verifyMode,_inOutMode,_year,_month,_day,_hour,_minute)
	select 
	dwEnrollNumber,[name],password,privileg,dwVerifyMode,dwInOutMode,timeStr,_machineNumber,_enrollNumber,_enrollMachineNumber,_verifyMode,_inOutMode,_year,_month,_day,_hour,_minute 
	from Vew_AllMacData
	RETURN

الأكواد سليمه ان شاء الله ولكن تتبعو الخطوات بكل دقه  

تم الانتهاء من اعداد الجداول وتهيئه الاستورد بروسيدجر  سننتقل الى فيجوال بيسك ونفتح مشروع ويب جديد بلغه سى شارب C#

 

تم ارفاق ملف SDK فى المرفقات فك ضغط الملف وقم بعمل كوبى لكل الملفات الموجوده فيه وقم بنسخها فى System32

او بنسخها فى Syswow64 اذا كانت الويندوز 7 او 8 او فيستا

 

ثم قم بكتابه التالى فى قائمه Run

Cmd

 

ويفضل فتح نافذه ال Command  ب

Run As Administrator

ونكتب التالى فيها

 

Regsvr32 C:\Windows\SysWOW64\ zkemkeeper.dll

ثم اضغط انتر

ستظهر نافذه تدلك على نجاح العمليه فاذا ظهر رساله خطأ فابحث عن الخطأ فى جوجل الحلول موجوده فلن نتطرق لحل مشاكل ال regsvr  هنا حيث انه موضوع طويل بعد نجاح العمليه

 

 

  1. سنتوجه الان الى مشروع الويب ونقوم بعمل اد ريفرنس لملف ال zkemkeeper.dll من مساره على سيستم 32 او سيس واو64 ونضغط اوك

اضافه جمله الاتصال التاليه فى ملف الويب كونفيج بين تاجات  connectionStrings

<connectionStrings>
    <add name="ERP_ProjectConnectionString" connectionString="Data Source=.;Initial Catalog=ERP_Project;uid=sa; password=mordy;" providerName="System.Data.SqlClient"/>
  </connectionStrings>
  1. اضافه كلاس للاتصال مع قاعده بيانات السيكول وسيكون اسمه ConnectMag- using System;-;
4-	using System;
5-	using System.Data;
6-	using System.Configuration;
7-	using System.Linq;
8-	using System.Web;
9-	using System.Web.Security;
10-	using System.Web.UI;
11-	using System.Web.UI.HtmlControls;
12-	using System.Web.UI.WebControls;
13-	using System.Web.UI.WebControls.WebParts;
14-	using System.Xml.Linq;
15-	using System.Data.SqlClient;
16-	
17-	
18-	/// <summary>
19-	/// Summary description for ConnectMang
20-	/// </summary>
21-	public class ConnectMang
22-	{
23-	   
24-	    public static SqlConnection GetConnection()
25-	    {
26-	
27-	        SqlConnection Conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ERP_ProjectConnectionString"].ToString());
28-	        Conn.Open();
29-	        return Conn;
30-	    }
31-	}

عمل كلاس لعمل الميسود التى ستستدعى من خلالها الاستورد بروسيدجر التى تم عملها فى السيكول سيرفر من قبل واسم الكلاس  AddInMac

وكود الميسودز

using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

using System.Data.SqlClient;
using System.Data;
using System.Collections.Generic;

/// <summary>
/// Summary description for AddInMac
/// </summary>
public class AddInMac
{
	public AddInMac()
	{
		//
		// TODO: Add constructor logic here
		//
	}

    public void AddGdata(Int32 dwEnrollNumber, string name, string password, Int32 privileg, Int32 dwVerifyMode, Int32 dwInOutMode,
  string timeStr, int _machineNumber, int _enrollNumber, int _enrollMachineNumber, int _verifyMode, int _inOutMode,
  int _year, int _month, int _day, int _hour, int _minute)
    {

        using (SqlConnection con = ConnectMang.GetConnection())
        {
            SqlCommand Cmd = new SqlCommand("AddGdata", con);
            Cmd.CommandType = CommandType.StoredProcedure;
            Cmd.Parameters.AddWithValue("@dwEnrollNumber", dwEnrollNumber);
            Cmd.Parameters.AddWithValue("@name", name);
            Cmd.Parameters.AddWithValue("@password", password);
            Cmd.Parameters.AddWithValue("@privileg", privileg);
            Cmd.Parameters.AddWithValue("@dwVerifyMode", dwVerifyMode);
            Cmd.Parameters.AddWithValue("@dwInOutMode", dwInOutMode);
            Cmd.Parameters.AddWithValue("@timeStr", timeStr);
            Cmd.Parameters.AddWithValue("@_machineNumber", _machineNumber);
            Cmd.Parameters.AddWithValue("@_enrollNumber", _enrollNumber);
            Cmd.Parameters.AddWithValue("@_enrollMachineNumber", _enrollMachineNumber);
            Cmd.Parameters.AddWithValue("@_verifyMode", _verifyMode);
            Cmd.Parameters.AddWithValue("@_inOutMode", _inOutMode);
            Cmd.Parameters.AddWithValue("@_year", _year);
            Cmd.Parameters.AddWithValue("@_month", _month);
            Cmd.Parameters.AddWithValue("@_day", _day);
            Cmd.Parameters.AddWithValue("@_hour", _hour);
            Cmd.Parameters.AddWithValue("@_minute", _minute);
            Cmd.ExecuteNonQuery();
        }
    }
    public void AddActdata()
    {
        using (SqlConnection con = ConnectMang.GetConnection())
        {
            SqlCommand Cmd = new SqlCommand("AddActdata", con);
            Cmd.CommandType = CommandType.StoredProcedure;         
            Cmd.ExecuteNonQuery();
        }
    }
}

ثم اضافه عدد 3 تكست بوكس وعدد 2 بوتون  فى صفحه الويب وجريد فيو وقم بتغير اسمائها كما فى الكود

الدخول على كود بهيند الصفحه بدبل كليك على الصفحه ونستدعى فضاءات الاسماء التاليه مع استدعاء اسم الملف الدى ال ال الذى قمنا بعمل اد ريفرنس له كالتالى

using System;
using System.Collections.Generic;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Configuration;


using zkemkeeper;ملف الدى ال ال

-ثم عمل اوبجكت من ملف الدى ال وتعريف الفاريبول واوبجكت من ملف الكلاس الخاص بالميسود الذى قمنا بعمله من قبل راجع الخطوات ويتم وضع سطور الكود تحت public partial class HR_PersonalAffire_DownDataMac : System.Web.UI.Page

    Boolean conn, ll;
    Int32 errCode, rr;
    DataTable Dt = new DataTable();

    public zkemkeeper.CZKEM axCZKEM1 = new zkemkeeper.CZKEM();اوبجكت من ملف الدى ال ال الريفرنس 
    private Boolean bIsConnected = false;
    private int iMachineNumber;


    AddInMac addinmacdll = new AddInMac(); اوبجكت من الكلاس الذى قمنا بتعريفه

كود الزر الاول Connection – Check

try
        {

            axCZKEM1.SetCommPassword(Convert.ToInt16(Txt_CommKey.Text.Trim()));
            axCZKEM1.BASE64 = 1;
            conn = axCZKEM1.Connect_Net(Txt_MacIP.Text.Trim(), Convert.ToInt16(Txt_MacPort.Text.Trim()));
            axCZKEM1.GetLastError(errCode);
            rr = axCZKEM1.MachineNumber;


            if (conn.Equals(true))
            {
                LblMsGError.Text = "تم الإتصال بنجاح تستطيع تحميل الحركات";

            }


        }
        catch (Exception ex)
        {

            string Er = ex.ToString();
            HttpCookie ErCokis = new HttpCookie("ErCokis");
            ErCokis.Value = Er.ToString();
            ErCokis.Expires = DateTime.Now.AddHours(1);
            Response.Cookies.Add(ErCokis);
            Response.Redirect("~/ErrorPage.aspx");
        }

ملحوظه يجب ان نقوم بعمل ميسود لكود فتح الاتصال ونستدعيها تحت الزر الاول بدلا من كتابه هذا الكود تحت الزر الاول لاننا سنحتاج فتح الاتصال فى عمليه تحميل الحركات وذلك بدلا من اعاده كتابه نفس سطور الكود مره اخرى تحت الزر الثانى

 

 

كود الزر الثانى

ConnectMac();    ميسود فتح الاتصال الذى تكلمنا عنها   وهى نفس الكود المكتوب تحت الزر الاول 	

        int dwEnrollNumber = 0;
        string name = "";
        string password = "";
        int privileg = 0;
        SqlConnection conexaoMySQL = default(SqlConnection);
        string strSQL = "";
        int dwVerifyMode = 0;
        int dwInOutMode = 0;
        string timeStr = "";
        bool enable = false;
        System.Text.StringBuilder _data = new System.Text.StringBuilder();
        int _errorCode = 0;
        int _machineNumber = 0;
        int _enrollNumber = 0;
        int _enrollMachineNumber = 0;
        int _verifyMode = 0;
        int _inOutMode = 0;
        int _year = 0;
        int _month = 0;
        int _day = 0;
        int _hour = 0;
        int _minute = 0;

        axCZKEM1.BASE64 = 1;
        axCZKEM1.ReadMark = true;
        axCZKEM1.GetLastError(_errorCode);
        axCZKEM1.ReadAllUserID(1);
        axCZKEM1.ReadMark = true;


        // Boolean DD = axCZKEM1.ReadGeneralLogData(rr);
        // Label1.Text = DD.ToString()+"MacNum____"+rr.ToString();

        if (axCZKEM1.ReadGeneralLogData(1))
        {
            axCZKEM1.GetLastError(ref _errorCode);


            while (axCZKEM1.GetGeneralLogData(1, ref _machineNumber, ref _enrollNumber, ref _enrollMachineNumber, ref _verifyMode, ref _inOutMode, ref _year, ref _month, ref _day, ref _hour, ref _minute))
            {
                axCZKEM1.GetGeneralLogDataStr(1, ref dwEnrollNumber, ref dwVerifyMode, ref dwInOutMode, ref timeStr);
                axCZKEM1.GetUserInfo(1, dwEnrollNumber, ref name, ref password, ref privileg, ref enable);
                int data1 = 0;
                int data2 = 1000000;
                conexaoMySQL = new SqlConnection(ConfigurationManager.ConnectionStrings["ERP_ProjectConnectionString"].ToString());
                if (data1 < _minute)
                {
                    //strSQL = "INSERT INTO InOut (dwEnrollNumber,[name],password,privileg,dwVerifyMode,dwInOutMode,timeStr,_machineNumber,_enrollNumber,_enrollMachineNumber,_verifyMode,_inOutMode,_year,_month,_day,_hour,_minute) VALUES ( '" + dwEnrollNumber + "','" + name + "','" + password + "','" + privileg + "','" + dwVerifyMode + "','" + dwInOutMode + "','" + timeStr + "','" + _machineNumber + "','" + _enrollNumber + "','" + _enrollMachineNumber + "','" + _verifyMode + "','" + _inOutMode + "','" + _year + "','" + _month + "', '" + _day + "','" + _hour + "','" + _minute + "')";
                    //strSQL = "INSERT INTO InOut (dwEnrollNumber,[name],password,privileg,dwVerifyMode,dwInOutMode,timeStr,_machineNumber,_enrollNumber,_enrollMachineNumber,_verifyMode,_inOutMode,_year,_month,_day,_hour,_minute) VALUES ( '" + 1 + "','" + "MM" + "','" + "PS" + "','" + 1 + "','" + 1 + "','" + 1 + "','" + "timeStr" + "','" + 1 + "','" + 1 + "','" + 1 + "','" + 1 + "','" + 1 + "','" + 1 + "','" + 1 + "', '" + 1 + "','" + 1 + "','" + 1 + "')";

                    addinmacdll.AddGdata(dwEnrollNumber, name, password, privileg, dwVerifyMode, dwInOutMode, timeStr, _machineNumber, _enrollNumber, _enrollMachineNumber, _verifyMode, _inOutMode, _year, _month, _day, _hour, _minute);


                }

                Label1.Text = _enrollNumber.ToString();
            }
            addinmacdll.AddActdata();
            LblMsGError.Text = "تم تحميل الحركات";
        }
        // GridView1.DataBind();

وبهذا تم الانتهاء والحمد لله  وانا معكم فى التواصل على الميل المكتوب اعلاه

والسلام عليكم ورحمه الله

شرح طريقه الاتصال بماكينات الحضور والانصراف بالكامل ا.pdf

1
#2

اسف ملفات الدى ال ال

SDK.rar

#3

السلام عليكم

 

المشكلة لايوجد حل لجميع الماكنات وانما كل شركة تنتج هذه الماكنات لها طريقة خاصة لذا حتى يصبح موضوعك مفيد ارجو ان تضع نوع هذه الماكنة والشركة المصنعة وما الى ذلك من امور قد تفيد غيرك .

#4

يا أخى انا مبرمج واعمل فى مجموعه بها اكثر من شركه وبها اكثر من نوع مثل NAPCO  IDWatchr

وبفضل الله الكود شغال مئه بالمائه الفكره  هى ملف الدى ال ال فقط وهو يحتوى على كل الميسود التى تسطيع محاطبه اى ديفيس على الشبكه

#5

ممتاز

#6

بس ياسلام لو ترفع المشروع كله

#7

مشكور كتير أخي

قل لمن يحمل هما ****** إن همــــا لا يدوم
:rolleyes: :rolleyes: :clapping: :rolleyes: :rolleyes:

مثلا تفنى المسـرة ***** هكذا تفنى الهموم

#8

عندي مشكلة

 

كل حاجة مظبوطه بس مفيش اتصال بالجهاز

#9

حسابى ع الفيس  https://www.facebook.com/mohamed.alhlwany  للتواصل معى فى البرمجه عموما

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…