PDA

View Full Version : مبتدی: عدم نمایش taskbar هنگام اجرای برنامه



ya30ien2
دوشنبه 18 مهر 1390, 16:03 عصر
چطوری میشه کاری کرد که به هیچ وجه موقعی که برنامه در حال اجراست taskbar نمایش داده نشه و حتی منوی start

Farshid007
دوشنبه 18 مهر 1390, 17:32 عصر
واسه چی این کارو رو می کنی؟
میزنی ویندوز طرف رو خراب میکنی!

ya30ien2
دوشنبه 18 مهر 1390, 19:35 عصر
یعنی راهی نداره که فقط موقعی که برنامه در حال اجرا هستش چنین اتفاقی رخ بده؟

hadmo_ces
دوشنبه 18 مهر 1390, 20:52 عصر
از api ها باید استفاده کنی.
بلدم ولی الان حال ندارم.

m.soleimani
دوشنبه 18 مهر 1390, 21:03 عصر
واسه چی این کارو رو می کنی؟
میزنی ویندوز طرف رو خراب میکنی!

چی ویندوز طرف خراب می‌شه ؟!!

همه برنامه نویس‌های تازه‌کار اولین کاری که به ذهنشون می‌رسه خراب کاری و نوشتن ویروس یا چیزای شبیه این هست و از نظر خودشون به راحتی می‌تونن انجامش بدن بعد از یه مدت متوجه می‌شن که سخت‌ترین کارهای ممکن توسط برنامه نویسی نوشتن همون ویروس‌هاست که نیاز به داشتن دانش بالا داره حالا زمانی که می‌رسن به اون دانش متوجه می‌شن که برای چی باید وقتشون رو بزارن برای نوشتنش و توی همون زمان می‌تونن کلی کارهای دیگه بکنن و سطح فکری‌شون دیگه اجازه نمی‌ده دنبالش باشن.

بگذریم برای انجام این کار قبلن چندین بار بحث شده که اگر جستجو کنید توی سایت حتمن پیدا می‌کنید ولی زبان #C زبان مناسبی نیست و مراقب باش هر دستوری که برات ناشناس هست رو هم توی سیستمت اجرا نکنی « مخصوصن اگر طرف گفت برات یه برنامه نوشتم به مدت مثلن 15 ثانیه فلان چیز رو از کار میندازه » حتمن در موردش مطالعه کن بعد انجامش بده.

شاد و پیروز باشید./

ya30ien2
دوشنبه 18 مهر 1390, 23:24 عصر
اما دوست عزیز من واقعا دنبال خرابکاری نیستم
من میخوام یک محافظ صفحه که دارای قفل باشه برای خودم درست کنم که وقتی فعال باشه کسی نتونه از سیستم استفاده کنه
درضمن جستجو هم کردم اما به چیز مناسبی نرسیدم
بازم اگه میتونی لطفا کمکم کن ممنون میشم

m.soleimani
دوشنبه 18 مهر 1390, 23:44 عصر
اما دوست عزیز من واقعا دنبال خرابکاری نیستم
من میخوام یک محافظ صفحه که دارای قفل باشه برای خودم درست کنم که وقتی فعال باشه کسی نتونه از سیستم استفاده کنه
درضمن جستجو هم کردم اما به چیز مناسبی نرسیدم
بازم اگه میتونی لطفا کمکم کن ممنون میشم


private static void EnableTaskManager(bool enable)
{
Microsoft.Win32.RegistryKey HKCU = Microsoft.Win32.Registry.CurrentUser;
Microsoft.Win32.RegistryKey key = HKCU.CreateSubKey(@"Software\Microsoft\Windows\CurrentVersion\Policies \System");
key.SetValue("DisableTaskMgr", enable ? 0 : 1, Microsoft.Win32.RegistryValueKind.DWord);
}

ya30ien2
سه شنبه 19 مهر 1390, 00:02 صبح
دوست عزیز میشه بگید اینو کجا بنویسم و چطوری فراخوانیش کنم؟

ya30ien2
سه شنبه 19 مهر 1390, 00:08 صبح
راستی ویندوز من 7 هستش مگه فرق هم میکنه؟

ya30ien2
سه شنبه 19 مهر 1390, 10:38 صبح
لطفا یک نفر دی مورد این کد توضیح بده

wolf_majid
سه شنبه 19 مهر 1390, 11:41 صبح
private static void EnableTaskManager(bool enable)
{
Microsoft.Win32.RegistryKey HKCU = Microsoft.Win32.Registry.CurrentUser;
Microsoft.Win32.RegistryKey key = HKCU.CreateSubKey(@"Software\Microsoft\Windows\CurrentVersion\Policies \System");
key.SetValue("DisableTaskMgr", enable ? 0 : 1, Microsoft.Win32.RegistryValueKind.DWord);
}


تستش کردم کلید توی رجیستری ساخته شد ولی تسکبار مخفی نشد
البته این رو بگم از Win7 استفاده می کنم

ya30ien2
سه شنبه 19 مهر 1390, 12:43 عصر
کسی دیگه کد نداره؟

ya30ien2
سه شنبه 19 مهر 1390, 12:49 عصر
با این آدرسی که داخل کد هستش من بصورت دستی هم انجام دادم به نتیجه ای نرسیدم
لطفا اگه کسی کد دیگه ای داره بزاره

m.soleimani
سه شنبه 19 مهر 1390, 13:18 عصر
تستش کردم کلید توی رجیستری ساخته شد ولی تسکبار مخفی نشد
البته این رو بگم از Win7 استفاده می کنم

ببین با این به نتیجه می‌رسی:





public static extern int FindWindow(string lpClassName, string lpWindowName);
[DllImport("User32.dll")]
public static extern Int32 SendMessage(int hWnd, int Msg, int wParam, int lParam);
private void Form1_Load(object sender, EventArgs e)
{
Process p = new Process();
p.StartInfo.WorkingDirectory = Environment.GetFolderPath(Environment.SpecialFolde r.System);
p.StartInfo.FileName = "taskmgr.exe";
p.StartInfo.CreateNoWindow = true;
p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
p.Start();
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
const int WM_CLOSE = 0x0010;
int taskManager = FindWindow("#32770", "Windows Task Manager");
SendMessage(taskManager, WM_CLOSE, 0, 0);
}







کسی دیگه کد نداره؟

شما ابتدا باید بتونی از کدها استفاده کنی بعد بگو کسی دیگه‌ای کد نداره در کل برو از اینترنت چندتا نمونه از اون اسکرین سیورهای رایگان کد باز با سی شارپ رو دانلود کن ببین چه جوری کار می‌کنن شاید نیازی هم نباشه شما کنترل‌های سیستم رو از کاربر برای یه برنامه ساده بگیری باید به کارت هدف بدی.

شاد و پیروز باشید./

ya30ien2
سه شنبه 19 مهر 1390, 15:49 عصر
دوست عزیز چنین اروری میده
Could not load type 'Screen.Screen' from assembly 'Screen, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' because the method 'FindWindow' has no implementation (no RVA).

ya30ien2
سه شنبه 19 مهر 1390, 17:06 عصر
لطفا در مورد این ارور کمک کنید
بازم ممنون از جواباتون

ya30ien2
سه شنبه 19 مهر 1390, 23:16 عصر
یعنی یک نفر نبود ما رو یاری کنه ؟

haniyehghassami
چهارشنبه 20 مهر 1390, 01:29 صبح
سلام
formBorderStyle=None
WindowState=maximized
به اینا میگن کلک مرغابی دوست عزیز
امیدوارم که کمکتون کنهههههههههههههههههههههه
:چشمک:

m.soleimani
چهارشنبه 20 مهر 1390, 05:49 صبح
سلام
formBorderStyle=None
WindowState=maximized
به اینا میگن کلک مرغابی دوست عزیز
امیدوارم که کمکتون کنهههههههههههههههههههههه
:چشمک:

این کلک‌های مرغابی چه ارتباطی می‌تونه به این تاپیک داشته باشه قصد ایشون نوشتن یه اسکرین سیور هست به قول خودشون ولی گویا اصلن به کد نویسی آشنا نیستن و به هیچ وجه هم حاضر نیستن از پایه بشینن و یاد بگیرن برای همین هست که تا حالا به نتیجه نرسیدن به هر حال شاید هم راه درست کلک مرغابی باشه خدا رو چه دیدی.

یعنی یک نفر نبود ما رو یاری کنه ؟

!!!

دوست عزیز چنین اروری میده
Could not load type 'Screen.Screen' from assembly 'Screen, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' because the method 'FindWindow' has no implementation (no RVA

کد برنامت رو بزار این‌جا تا دوستان روش نظر بدن./

ya30ien2
چهارشنبه 20 مهر 1390, 08:25 صبح
اینم خود برنامه (http://s2.picofile.com/file/7157193010/Screen.rar.html) تا جایی که پیش رفتم

ya30ien2
چهارشنبه 20 مهر 1390, 13:19 عصر
من برنامه رو هم گزاشتم کسی نبود جواب بده؟

ya30ien2
چهارشنبه 20 مهر 1390, 22:51 عصر
اساتید محترم من همچنان منتظر کمکتون هستم
اگه لطف کنید

m.soleimani
پنج شنبه 21 مهر 1390, 00:02 صبح
شما گویا کلن وقتت آزاده !!
معلم خصوصی که نگرفتی همیشه یکم صبر بهترین نتیجه رو خواهد داد در اولین فرصت برنامه شما رو یه نگاه بهش میندازم شاد و پیروز باشید./

ya30ien2
پنج شنبه 21 مهر 1390, 00:07 صبح
آره آخه هنوز اول ترم هستش
نعمولا اول ترم هم اساتید جیم میشن
من هم وقت آزاد تا دلت بخواد
دمت گرم

ACorvinus
پنج شنبه 21 مهر 1390, 07:43 صبح
سلام.
دوست عزیز خودم اینو رو win7 تست کردم. البته یه کدی هم بود که Taskbar رو hide میکرد ولی دکمه start نشون داده میشد.
اگه میخوای اینجوری باشه در کد زیر هر چیزی ه مربوط به StartHandle میشه رو پاک کن.
موفق باشی.


using System;
using System.Runtime.InteropServices;
namespace ConsoleApplication1
{
public class Taskbar
{
[DllImport("user32.dll")]
private static extern int FindWindow(string className, string windowText);
[DllImport("user32.dll")]
private static extern int ShowWindow(int hwnd, int command);
private const int SW_HIDE = 0;
private const int SW_SHOW = 1;
protected static int Handle
{
get
{
return FindWindow("Shell_TrayWnd", "");
}
}
protected static int StartHandle
{
get
{
return FindWindow("Button", "Start");
}
}
public static void Show()
{
ShowWindow(Handle, SW_SHOW);
ShowWindow(StartHandle, SW_SHOW);
}
public static void Hide()
{
ShowWindow(Handle, SW_HIDE);
ShowWindow(StartHandle, SW_HIDE);
}
}
}

ACorvinus
پنج شنبه 21 مهر 1390, 07:46 صبح
میدونم خودت میدونی ولی گفتم شاید بخوای بازم بدونی:
کد فوق در یه کلاسی بنویس بعدش کافیه مثلا در Load برنامه این کد رو بنویسی تا عملکرد این کلاس برات محسوس تر باشه:


System.Threading.Thread.Sleep(3000);
Taskbar.Hide();
System.Threading.Thread.Sleep(10000);
Taskbar.Show();

ya30ien2
پنج شنبه 21 مهر 1390, 11:22 صبح
دستت درد نکنه اما بازم یه مشکلی هست من این کد رو قبلا پیدا کرده بودم اما اگر دکمه پنجره روی کیبرد رو فشار بدیم منو استارت نمایش داده میشه
من میخوام جوری باشه که بلکل قفل باشه یعنی اگه برنامه دیگه ای هم در حال اجرا باشه اون رو نتونیم ببینیم یا ...
بازم ممنون از توجهت

ya30ien2
پنج شنبه 21 مهر 1390, 18:48 عصر
بازم سلام به همگی
چرا پس کسی جواب ما رو نداد!!!!!!!!

m.soleimani
پنج شنبه 21 مهر 1390, 19:04 عصر
دستت درد نکنه اما بازم یه مشکلی هست من این کد رو قبلا پیدا کرده بودم اما اگر دکمه پنجره روی کیبرد رو فشار بدیم منو استارت نمایش داده میشه
من میخوام جوری باشه که بلکل قفل باشه یعنی اگه برنامه دیگه ای هم در حال اجرا باشه اون رو نتونیم ببینیم یا ...
بازم ممنون از توجهت

شما برای این مشکل باید هر کلیدی رو که مورد نظرت هست رو هندل کنی. پاسخ‌ها کامل هست توی این تاپیک اگر با مورد استفاده از اون‌ها مشکل داری باید سعی کنی اطلاعات خودت رو زیاد کنی. اینم یه لیست کامل از کلیدهای موجود هر کدوم رو که نیاز دیدی رو هندل کن که دیگه قابل استفاده نباشه شاد و پیروز باشید./

http://msdn.microsoft.com/en-us/library/system.windows.forms.keys(v=vs.71).aspx

ya30ien2
پنج شنبه 21 مهر 1390, 19:48 عصر
میتونید برای مثال لطف کنید روی یک کلید انجام بدید؟

m.soleimani
پنج شنبه 21 مهر 1390, 20:01 عصر
میتونید برای مثال لطف کنید روی یک کلید انجام بدید؟

قابل شما رو نداره آموزش کامل به خوبی با توجه به لینک پست قبلی که برات قرار دادم امکان این رو داری که هر کلیدی رو که خواستی هندل کنی شاد و پیروز باشی./

http://msdn.microsoft.com/en-us/library/ms171538.aspx

ya30ien2
پنج شنبه 21 مهر 1390, 21:17 عصر
طبق اون لیست اول با این کد انجام دادم یعنی رقمهاش رو عوض کردم اما جواب نداد

senaps
پنج شنبه 21 مهر 1390, 21:52 عصر
سلام....
صحبت از کیبرد و اینا شد،سوالی خواستم بپرسم که البته جاش اینجا نیست!!
چجوری میتونم کاری بکنم که اگه رو کیبرد،دگمه ی N زده شد،N رو به برنامه یا مثلا تکست باکس بفرسته؟!! منظورم برنامه هایی مثل softkeyboard هستش!! اخه اگه بخوای این همه کلید رو ادیت کنی،6 ماه فقط باید در این مورد کد بنویسی که چون من برا یه ماشین حساب این کارو کردم،یه خورده سخته واقعا!
------------------------------

واقعا شرمنده دوستان! یاد گرفتم....فک نمی کردم که اینقد اسون باشه! و امتحانش نکرده بودم کد هایی که دوستان داده بودن رو!!!
سوالم رو عوض میکنم با این که چجوری همون حالت کیبرد رو درست کنم،ولی بدون اینکه برنامه پایین بره،توی تکست باکسی در برنامه ای دیگه باهاش بنویسم؟!! یعنی همینجوری مثل همون برنامه ی سافت کیبرد؟!

m.soleimani
پنج شنبه 21 مهر 1390, 23:26 عصر
واقعا شرمنده دوستان! یاد گرفتم....فک نمی کردم که اینقد اسون باشه! و امتحانش نکرده بودم کد هایی که دوستان داده بودن رو!!!
سوالم رو عوض میکنم با این که چجوری همون حالت کیبرد رو درست کنم،ولی بدون اینکه برنامه پایین بره،توی تکست باکسی در برنامه ای دیگه باهاش بنویسم؟!! یعنی همینجوری مثل همون برنامه ی سافت کیبرد؟!
خاصیت TopMost رو true کنید.

شاد و پیروز باشید./

پی‌نوشت : دوست عزیز این خاصیت مربط به فرم هست جای دیگه دنبالش نگردی. برای شما و دیگران که ممکنه ندونن کجا هست.

senaps
پنج شنبه 21 مهر 1390, 23:48 عصر
مثل اینکه من همه چیز رو با هم قاطی کردم!!
سوال اول رو هم جوابش رو پیدا نکردم ظاهرا!! من میخوام مثلا یه دگمه با اسم t داشته باشم رو فرمم،که وقتی کاربر اون رو فشار میده،توی یه جای دیگه،حرف t وارد بشه!! یا تو خود فرمم و تو مثلا تکست باکسش!!
کدی که عملی بشه برای مثلا 104 تا کلید نوشت چیه؟!
ایا همین خاصیت top کافیه تا مثلا من بتونن تو فرمم،کلید مثلا t رو کلیک بکنم و مثلا حرف t رو توی ادرس بار مرورگرم ببینم؟

m.soleimani
جمعه 22 مهر 1390, 00:16 صبح
این کد تاپ برای این هست که فرم شما زمانی که فوکوس ازش خارج می‌شه و مثل شما یه پنجره دیگه رو باز می‌کنید مثل اینترنت اکسپلورر یا هر پنجره‌ی دیگه برنامه شما پشت اون نره و همواره روی صفحه باقی بمونه درست همون کاری که برنامه کیبورد مجازی ویندوز انجام میده.
برای این که متن داخل یه کلید به یه تکست باکس بره کافیه که توی خاصیت تکست اون دکمه متن یا حرف مورد نظرتون رو بنویسید و بعد از طریق همون خاصیت تکست که و تابع تواسترینگ اون رو به هر کنترل یا متغییری که یه رشته رو دریافت می‌کنه بفرستین « مثل تکست باکس » این تا این‌جا حالا اگر قصد دارید که کد اسکی یا یونیکد اون کلید رو ارسال کنید هم به همین ترتیب عمل خواهید کرد ولی برای نمایش خود حرف به جای کد یونیکد باید اون رو تبدیل کنید به رشته مورد نظر که می‌تونه عدد یا حرف باشه./

ya30ien2
جمعه 22 مهر 1390, 01:28 صبح
دوست عزیز اگه صفحه کلید مجازی میخوای فکر کنم اینجا (http://barnamenevis.org/showthread.php?295929-خاصیت-button&p=1298620&viewfull=1#post1298620) کارت راه بیوفته

senaps
جمعه 22 مهر 1390, 10:11 صبح
دوست عزیز اگه صفحه کلید مجازی میخوای فکر کنم اینجا (http://barnamenevis.org/showthread.php?295929-%D8%AE%D8%A7%D8%B5%DB%8C%D8%AA-button&p=1298620&viewfull=1#post1298620) کارت راه بیوفته


ماکروسافت all in one رو دارم و کل کد ها در دسترسه....ولی ایده ی پشت اون رو میخواستم برای کارهای دیگه!! ممنون و ببخشید که تاپیکتون رو مسیرش رو عوض کردم....تاپیک شما رو هم دنبال میکنم ببینم چی میشه اخرش!


این کد تاپ برای این هست که فرم شما زمانی که فوکوس ازش خارج می‌شه و مثل شما یه پنجره دیگه رو باز می‌کنید مثل اینترنت اکسپلورر یا هر پنجره‌ی دیگه برنامه شما پشت اون نره و همواره روی صفحه باقی بمونه درست همون کاری که برنامه کیبورد مجازی ویندوز انجام میده.

اره اینو گرفتم! و البته خوشم هم اومد ازش....نمیدونستم این چیکار میکنه تو تنظیمات فرم ها!


برای این که متن داخل یه کلید به یه تکست باکس بره کافیه که توی خاصیت تکست اون دکمه متن یا حرف مورد نظرتون رو بنویسید و بعد از طریق همون خاصیت تکست که و تابع تواسترینگ اون رو به هر کنترل یا متغییری که یه رشته رو دریافت می‌کنه بفرستین « مثل تکست باکس » این تا این‌جا حالا اگر قصد دارید که کد اسکی یا یونیکد اون کلید رو ارسال کنید هم به همین ترتیب عمل خواهید کرد ولی برای نمایش خود حرف به جای کد یونیکد باید اون رو تبدیل کنید به رشته مورد نظر که می‌تونه عدد یا حرف باشه./

یعنی متن رو اول توی یه تکست باکس بنویسم،بعد همش رو کپی بکنم درسته؟باید تست کنم این چیزی که گفتین رو....
سپاس از پاسخ هاتون.....

m.soleimani
جمعه 22 مهر 1390, 13:26 عصر
ماکروسافت all in one رو دارم و کل کد ها در دسترسه....ولی ایده ی پشت اون رو میخواستم برای کارهای دیگه!!
برای نوشتن کی لوگر شما هم باید دانش بیشتری داشته باشید هم مسلط باشید به زبان‌های سطح پایین‌تر در کل خیلی راه جلوتون هست و به نظر من اگر هدف آسون‌تری رو فعلن که زیاد به کد نویسی آشنا نیستین انتخاب کنید اصلن سرخورده نخواهید شد.

شاد و پیروز باشید./

m.soleimani
جمعه 22 مهر 1390, 16:58 عصر
طبق اون لیست اول با این کد انجام دادم یعنی رقمهاش رو عوض کردم اما جواب نداد

برای آزمایش این کدها دوتا رویداد KeyDown و keyPress رو به یه ویندوز فرم ساده اضافه کن و اینا رو داخلش بنویس :


private void Form1_KeyPress(object sender, KeyPressEventArgs e)
{
switch (e.KeyChar)
{
case (char)49:
case (char)52:
case (char)55:
MessageBox.Show("Form.KeyPress: '" +
e.KeyChar.ToString() + "' consumed.");
e.Handled = true;
break;
}
}
private void ShowMessage(string str)
{
MessageBox.Show(str);
}
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode== Keys.F1)
ShowMessage("F1");
e.Handled = true;
}


برای تستش هم از صفحه کلید شماره‌های 1 و 4 و 7 و F1 رو بزن فکر کنم دیگه از این ساده‌تر نتونم بگم.

شاد و پیروز باشید./

پی‌نوشت : باز هم بهتون می‌گم دوست عزیز شما قبل از این که تخیلی در مورد برنامه خودتون داشته باشید حالا هر چیز که باشه با هر درجه سختی ابتدا باید برنامه نویسی رو خوب یاد بگیرید چون به این ترتیب که الان دارین عمل می‌کنید بعد از یه مدت سرخورده خواهید شد و ممکنه حتی برنامه نویسی رو کنار بزارید پس ابتدا شروع کن به اصولی و بدون عجله یادگرفتن خود برنامه نویسی تا بتونی توی این رشته آینده پیدا کنی.