المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : كيف استقبـــل كلمــــة او رقــــــــم فــــــي (Clipboard)


ياسرهتهت
19-11-2015, 08:13 PM
بسم الله الرحمن الرحيم
أخواني الاعزاء اساتذتي الكرام
ماهو الكود المناسب لجعل البرنامج يستقبل كتابة رقم او حرف ليس في مكان نشط
مثل Input او غيرة
اي لتوضيح اكثر ---- عند كتابة الرقم لا يكون المؤشر في مكان نشط للكتابة او حتي يكون في مكان نشط
لا اريد كتابة بل اريد ان يخزن في الذاكرةClipboard ويتم توجية الي Input معين
وهنا اتكلم عن مفتاح واحد من لوحة المفاتيح مثلا لو ضغط على رقم 8 اريد ان يخزن في الذاكرة ويوجة الي الانبت 3

بهذا الكود للاستاذ/ هيثم بارك الله فية
-- hide window when min

if_min = WinApi.IsWindowMinimized(Application.GetWndHandle( ));

if if_min then

Window.Hide(Application.GetWndHandle());


end

-----------------------------------------

--restore when alt+h

if e_ID == 10 then


alt = System.IsKeyDown(18);
h = System.IsKeyDown(72);

if alt and h then
Application.Restore();

-- set this window above any window
Window.SetOrder(Application.GetWndHandle(), HWND_TOPMOST);

end


end





يتم استعادة شاشة البرنامج الغير نشطة والمخفية تمامــــــــــــــا
طبعا انا استفدت كثير جدا من هذا الكود بعد جعل مفتاح واحد مسئول عن هذة العملية

واريد بنفس الطريقة تطبيق ما ذكرتة في الاعلى
:abc_102:ارجو المساعدة لاني عشرات الساعات من المحاولات فشلة:abc_102:

:abc_083:عندي احساس ان ذالك ممكن ولكن خبرتي بالبرنامج بسيطة:abc_070:
موفقين بإذن الله ... لكم مني أجمل تحية .

ثامر أبو بلقيس
19-11-2015, 09:50 PM
أخي وضح الاستقبال يكون في وضع نشط للبرنامج أم لا ؟ لأن احداها سهل و الاخر يحتاج لعمل أو بالأحرى إلى تفكير :abc_138:

ثامر أبو بلقيس
19-11-2015, 11:05 PM
الى غاية توضيح المطلوب و قد يجيب أو بكمله زميل

جرب الاتي :

ضع انبوت1 في التجميعية

في الحدث on show أكتب

yes = false;
Page.StartTimer(10)

في on timer

k = String.ToNumber(DLL.CallFunction(_SystemFolder .. "\\user32.dll", "GetKeyState" , 104, DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL))
if (k > 5 or k < -5) and not yes then
yes = true
Input.Paste("Input1");
yes = false
end


الان بعد الضغط على المفتاح 104 أي الرقم ثمانية
سواء في وضع نشط للمشروع او في وضع تصغير سيكتب النص المنسوخ في الحافظة للانبوت

قد يكون هذا نصف الطريق يؤدي الى التفكير كيف ينسخ Clipboard كل ما يكتب ؟؟ موفق :abc_138:

ياسرهتهت
19-11-2015, 11:50 PM
أخي وضح الاستقبال يكون في وضع نشط للبرنامج أم لا ؟ لأن احداها سهل و الاخر يحتاج لعمل أو بالأحرى إلى تفكير :abc_138:
===================================
بسم الله الرحمن الرحيم
في وضع نشط للبرنامج

والكود السابق بالفعل رائع وشغال مئة %
لكن انا لا اريد عند الضغط على 8 ان يكتب ما في الذاكرة في الانبت
انا اريد ان يخزن الرقم 8 نفسة في الذاكرة Clipboard وبعد ذالك باي طريقة يتم توجية الي Input
--- وتوضيح اكثر انا بامكاني ان اكتب رقم 8 في Input مباشرة بتنشيط الــ Input والضغط على رقم ثمانية في لوحة المفاتيح
لكن انا اريد ان يتم تخزين الرقم 8 في Clipboard بعد ذالك يذهب للــــ Input
يعني Clipboard وسيط لتحكم في مكان الرقم 8 في اي Input

انا لم اجد طريقة توصل اي نص او رقم للـــــ Clipboard سوي النسخ ؟؟


وعندي تسائل ثاني Clipboard من الواضح انها ذاكرة النظام
كبف يتم تفريغا ؟؟

انا اسف جدا استاذي الكريم على هذه الاسئلة الكثيرة والمتعبة

لكن ما باليد حيلة الموضوع مهم بالنسبة لي كثيرا


موفق بإذن الله ... لك مني أجمل تحية .

ثامر أبو بلقيس
20-11-2015, 02:17 AM
أفهم أن كتابة هذه المحاولة في حدث الصفحة في on key
سيعتبر خطوة نحو فهم السؤال

result =string.char(e_Key);
--------------------------------------------------------
if e_Key ==110 then
result ="."
end
for i=0,9 do
if e_Key ==96+i then
result =i
end
end
---------------
Clipboard.CopyText(result);
Input.Paste("Input1");
---------------------------------------

بخصوص الطلب الثاني على الموقع موضوع منع النسخ بإفراغ الحافظة

ثامر أبو بلقيس
20-11-2015, 02:50 PM
أعرف بأنه بالتأكيـــــد ليس المطلوب في إنتظـــار تدخل من يملك المعلومـــة
فقط اعتبره حضور في موضوعك أخي ياسر
لذا أردت أن أكتـــب هذه الخربشــة بغية التواصل مع لوح المفاتيح بالعربي و ألغي لوحة المفــاتيح بلغة غيرها

لكن المحـــاولة لم تكتمل و لتحقيق ذلك هاهي البداية لمن أحب تطويرهـــا

في الحدث on show نكتب هذه المصفوفـــة
belkiss={}
belkiss["48"]="0"
belkiss["49"]="1"
belkiss["50"]="2"
belkiss["51"]="3"
belkiss["52"]="4"
belkiss["53"]="5"
belkiss["54"]="6"
belkiss["55"]="7"
belkiss["56"]="8"
belkiss["57"]="9"
belkiss["66"]="لا"
belkiss["67"]="ؤ"
belkiss["70"]="ب"
belkiss["73"]="ه"
belkiss["77"]="ة"
belkiss["78"]="ى"
belkiss["79"]="خ"
belkiss["80"]="ح"
belkiss["81"]="ض"
belkiss["82"]="ق"
belkiss["84"]="ف"
belkiss["85"]="ع"
belkiss["86"]="ر"
belkiss["87"]="ص"
belkiss["88"]="ء"
belkiss["89"]="غ"
belkiss["90"]="ئ"
belkiss["65"]="ش"
belkiss["68"]="ي"
belkiss["69"]="ث"
belkiss["70"]="ب"
belkiss["71"]="ل"
belkiss["72"]="ا"
belkiss["74"]="ت"
belkiss["75"]="ن"
belkiss["76"]="م"
belkiss["83"]="س"
belkiss["186"]="ك"
belkiss["188"]="و"
belkiss["190"]="ز"
belkiss["192"]="ذ"
belkiss["219"]="ج"
belkiss["221"]="د"
belkiss["222"]="ط"
belkiss["191"]="ظ"
belkiss["32"]=" "
belkiss["46"]=""
belkiss["8"]=""


و في الحدث on key المتعـــلق بالصفحــة

result =belkiss[""..e_Key]
function kiss ()
if e_Key ==110 then
result ="."
end
for i=0,9 do
if e_Key ==96+i then
result =i
end
end
if e_Key ==46 then
Input.Undo("Input1");
end
if e_Key ==8 then
Input.SetText("Input1",String.Mid(Input.GetText("Input1"), 1, String.Length(Input.GetText("Input1"))-1));
end
Clipboard.CopyText(result);
Input.Paste("Input1");
end
if pcall(kiss) then
else
Dialog.TimedMessage("سيدي الكريـــــم", "هذه محاول يمكنك إكمال\r\nباقي إجراءات المفاتيح \r\nحسب لوحة مفاتيح عربي", 2000, MB_ICONINFORMATION);
end



بعد إدراج أنبوت 1 في حقل العمل يمكن الان الكتابة دون تفعيل المؤشر في العنصـــر
ستتم الكتابـــة بالعربي أرقاما و حروفا

ناجحة ؟ غير ناجحة ؟ لمستك و إظافتك كفيلة يتطوير للوصول لما تريد
موفق:abc_138:

ياسرهتهت
21-11-2015, 06:34 AM
بسم الله الرحمن الرحيم
أشكرك استاذي الكريم
علي هذا التعاون والمساعدة
جميع الاكواد رائعة ومفيدة
بارك الله فيك
اما موضوع للـــــ Clipboard والاحتفاظ بالرقم او الكلمة في ذاكرة النظام
ثم توجيها ؟
فقد اجابني احد الاساتذة المتخصصين في البرمجة بالفيجول بيسك. ان ما اريدة مستحيل
وخارج نطاق برنامج AutoPlay Media Studio
مثل مفتاح البرنت سكرين (prtscn) قي لوحة المفاتيح .... وغيرها
من الذواكر المحجوزة في النظام
http://www.abc4web.net/vb/images/icons/icon9.png لا اخفيك لم افهم تماماً ما قله لي هذا المتخصص ولكن فهمت ان ما اريدة مستحيل؟؟
-----------
http://www.abc4web.net/vb/images/icons/icon52.jpg اريد منك استاذي الكريم ان تطلع والاخوه الكرام على الملف في المرفقات
http://www.abc4web.net/vb/images/icons/eye.gifوتخبروني ماذا يعني هذا الملف؟ http://www.abc4web.net/vb/images/icons/eye.gif

http://www.abc4web.net/vb/images/icons/icon_z.gifاشكر من كل قلبي على هذا الجهد والمتابعة والعطاء
جعله الله في ميزان حسناتك

موفق بإذن الله ... لك مني أجمل تحية .
:abc_152::abc_152::abc_152:

عبود عبود
21-11-2015, 12:42 PM
Clipboard هى ذاكرة مؤقتة للتخزين
لكن على ما أعتقد الميمورى أو الميمورى إى إكس " إضافة أكشن " يمكنه حجز أماكن فية وتخزين أى قيم أو .........

غير متذكر الطريقة أو متابعتى العملية لم تعد قوية :abc_070:

ثامر أبو بلقيس
21-11-2015, 01:51 PM
حاولت أخي المحترم ياسر فهم ما أرفق لكن لم أفهم و لم أتوصل لشيء حتى قيمة الريجستري
لم ألاحظ أي تغيير طرأ بتسجيلها ... متابع معك للاستفادة :abc_138:

ياسرهتهت
21-11-2015, 03:02 PM
Clipboard هى ذاكرة مؤقتة للتخزين
لكن على ما أعتقد الميمورى أو الميمورى إى إكس " إضافة أكشن " يمكنه حجز أماكن فية وتخزين أى قيم أو .........

غير متذكر الطريقة أو متابعتى العملية لم تعد قوية :abc_070:

================================================== ===
اأخي عبود لا توجد او لم اجد اضافة Clipboard EX

فقط الاضافة العادية Clipboard


موفق بإذن الله ... لك مني أجمل تحية .

عبود عبود
21-11-2015, 03:17 PM
================================================== ===
اأخي عبود لا توجد او لم اجد اضافة Clipboard EX

فقط الاضافة العادية Clipboard


موفق بإذن الله ... لك مني أجمل تحية .


AMSWMemory أو MemoryEx

ياسرهتهت
21-11-2015, 03:17 PM
حاولت أخي المحترم ياسر فهم ما أرفق لكن لم أفهم و لم أتوصل لشيء حتى قيمة الريجستري
لم ألاحظ أي تغيير طرأ بتسجيلها ... متابع معك للاستفادة :abc_138:

===============================
المفروض ان هذا الملف
لربط Clipboard بالبرنامج
اي تتم عملية الحفظ لما هو منسوخ داخل شاشة البرنامج فقط
ليس مثل الحالة العادية تحتفظ
Clipboard
بما يسخ داخل او خارج البرنامج
ومن الواضح انه ملف لا يصلح او ليس ذي فائدة :abc_006:
================================
وهذة اكواد خاصة Clipboard للاطلاع لعلها تفيد احد
ويكون هذا الموضوع
تنول الـــــ Clipboard بشكل اشمل


local awful = awful

clipboard_path = os.getenv("HOME") .. "/.sel"

-- sub string function for utf8 strings copied from:
-- http://wowprogramming.com/snippets/UTF-8_aware_stringsub_7

-- UTF-8 Reference:
-- 0xxxxxxx - 1 byte UTF-8 codepoint (ASCII character)
-- 110yyyxx - First byte of a 2 byte UTF-8 codepoint
-- 1110yyyy - First byte of a 3 byte UTF-8 codepoint
-- 11110zzz - First byte of a 4 byte UTF-8 codepoint
-- 10xxxxxx - Inner byte of a multi-byte UTF-8 codepoint

local function chsize(char)
if not char then
return 0
elseif char > 240 then
return 4
elseif char > 225 then
return 3
elseif char > 192 then
return 2
else
return 1
end
end

-- This function can return a substring of a UTF-8 string, properly handling
-- UTF-8 codepoints. Rather than taking a start index and optionally an end
-- index, it takes the string, the starting character, and the number of
-- characters to select from the string.

local function utf8sub(str, startChar, numChars)
local startIndex = 1
while startChar > 1 do
local char = string.byte(str, startIndex)
startIndex = startIndex + chsize(char)
startChar = startChar - 1
end

local currentIndex = startIndex

while numChars > 0 and currentIndex <= #str do
local char = string.byte(str, currentIndex)
currentIndex = currentIndex + chsize(char)
numChars = numChars -1
end
return str:sub(startIndex, currentIndex - 1)
end

function read_entries(f)
local i = 1
local entries = {}
for line in f:lines() do
local idx = i
entries[i] = {
utf8sub(line, 0, 25) .. "...",
function()
cmd = "sed -n '".. idx .. "," .. idx .."p' " .. clipboard_path .. " | perl -pe 's/#NL/\\n/g' | xclip -d :0 -selection primary"
awful.util.spawn_with_shell(cmd)
naughty.notify({
text = string.gsub(line, '(#NL)', "\n"),
timeout = 3
})
end
}
i = i + 1
end
return entries
end

function clipboard_menu()
local entries = nil
local f = io.open(clipboard_path, "r")
if f ~= nil then
entries = read_entries(f)
f:close()
end

-- check if there is any entry, or stops here
if entries == nil or #entries == 0 then
naughty.notify({
text = "no cached entries",
timeout = 3
})
return
end

awful.menu.new({
items = entries,
width = 300,
}):show({keygrabber= true})
end

function clear_clipboard()
local file = io.open(clipboard_path, "w")
file:flush()
file:close()
end

function copy_to_clipboard()
local sel = selection()
local file, errmsg = io.open(clipboard_path, "a+")
if file == nil then
naughty.notify({
text = errmsg,
timeout = 3
})
return
end
naughty.notify({
text = sel,
timeout = 3
})
sel = string.gsub(sel, '(\n)', '#NL')
file:write(sel)
file:write("\n")
file:flush()
file:close()
end


موفق بإذن الله ... لك مني أجمل تحية .

:abc_138::abc_138:

ياسرهتهت
21-11-2015, 03:22 PM
AMSWMemory أو MemoryEx

================================================== ===

تمام اخي عبود
:abc_138::abc_138:

مارجوم،
24-02-2020, 10:42 AM
tnks ..................

سمسم يو
27-10-2020, 10:56 PM
بسم الله الرحمن الرحيم الحمدلله والصلاة والسلام على رسول الله وعلى آله وصحبه أجمعين