读书人

怎么实现点击一个MessageBox对话框后又

发布时间: 2012-08-29 08:40:14 作者: rapoo

如何实现点击一个MessageBox对话框后又出来一个?
实际上就是想弄一个整蛊的小软件,你点击按钮后,会弹出一个框,然后你又得点击,又弹出一个框,如此循环的一个接一个,还不能让运行后的状态出现在任务管理器,嘿嘿。。一定要点够我指定的次数才能关闭。该怎样来实现啊?
应该不用for循环吧?劳烦各位前辈指点一二,感激不尽。


[解决办法]
不用循环就用这个吧:
MessageBox.Show("点一次");
MessageBox.Show("点二次");
MessageBox.Show("点三次");
MessageBox.Show("点四次");
MessageBox.Show("点五次");
MessageBox.Show("点六次");
MessageBox.Show("点七次");
..............
[解决办法]
不用for循环可以用while循环啊

C# code
int num = 5;while (num > 0){    MessageBox.Show("点我吧!");    num--;}
[解决办法]
for(int i = 0;i<你想要的次数)
MessageBox.Show("点" + i + "次");
[解决办法]
for(int i = 0;i <你想要的次数;i++)
MessageBox.Show("点" + i + "次");

上面失误
[解决办法]
C# code
[STAThread]        static void Main()        {            int num = 500;            while (num > 0)            {                Thread th = new Thread(delegate()                {                    MessageBox.Show("点我吧!");                });                th.Start();                num--;            }        }
[解决办法]
递归,调用自己。

private void MessageShow(string msg)
{
MessageBox.Show("逗你玩!");
this.MessageShow("逗你玩!");
}


[解决办法]
try
{
int x = Convert.Int32(Console.ReadLine());
for(int i = 0;i<x;x++)
{
MessageBox.Show("随便写着玩");
}
}
catch
{
//error
}

过年前无事做随便写着玩
[解决办法]
上面的几个好像任务管理器里面能关掉吧?
[解决办法]
C# code
List<string> list = new List<string>();list.Add("我家住在黄土高坡");list.Add("大风(四季风)从坡上刮过");list.Add("不管是西北风还是东南风(八百年还是一万年)");list.Add("都是我的歌 我的歌");list.Add("我家住在黄土高坡");list.Add("大风(四季风)从坡上刮过");list.Add("不管是西北风还是东南风(八百年还是一万年)");list.Add("都是我的歌 我的歌");list.Add("我家住在黄土高坡");list.Add("日头从坡上走过");list.Add("照着我的窑洞");list.Add("晒着我的胳膊");list.Add("还有我的牛跟着我a");list.Add("不管过去了多少岁月");list.Add("祖祖辈辈留下我");list.Add("留下我一往无际唱着歌");list.Add("还有身边这条黄河");list.Add("哦 哦哦哦哦");list.Add("我家住在黄土高坡");list.Add("大风(四季风)从坡上刮过");list.Add("不管是西北风还是东南风(八百年还是一万年)");list.Add("都是我的歌 我的歌");list.Add("我家住在黄土高坡");list.Add("日头从坡上走过");list.Add("照着我的窑洞");list.Add("晒着我的胳膊");list.Add("还有我的牛跟着我a");list.Add("不管过去了多少岁月");list.Add("祖祖辈辈留下我");list.Add("留下我一往无际唱着歌");list.Add("还有身边这条黄河");list.Add("哦 哦哦哦哦");list.Add("我家住在黄土高坡");list.Add("大风(四季风)从坡上刮过");list.Add("不管是西北风还是东南风(八百年还是一万年)");list.Add("都是我的歌 我的歌");list.Add("我家住在黄土高坡");list.Add("大风(四季风)从坡上刮过");list.Add("不管是西北风还是东南风(八百年还是一万年)");list.Add("都是我的歌 我的歌");list.Add("都是我的歌 我的歌");list.Add("哦 哦哦哦哦");int num = 100;while (--num > 0){    Random rand = new Random();    MessageBox.Show(list[rand.Next(list.Count)]);} 


[解决办法]

C# code
List<string> list=new List<string>();list.Add("逗你玩!");list.Add("为什么想关闭我呢?");list.Add("回答对问题,我就自动关闭!");list.Add("问题1,CSDN全称是什么?");list.Add("再玩一个吧:风车车.Net认识吗?");list.Add("OK,耐心点。还没过年,在回答个,今年是什么年?");list.Add("呵呵。。,来个刺激点的,你最喜欢的AV是谁?");list.Add("什么,你既然喜欢她!太没品位了!");list.Add("为此你要付出代价,再回答一个:看了阿凡达了吗?");list.Add("是在电影看吗?");list.Add("盗版的DVD清晰吗?");list.Add("好吧,耐心点。全部回答对了有奖励哦!");//。。。。其他的要显示的文字。foreach(string msg in list){  MessageBox.Show(msg);}
[解决办法]
if(MessageBox.Show("yes or no?")==Dialog.Yes)
{
messagebox.show("aaaa!");
}
[解决办法]
for,while,foreach都可以啊
[解决办法]
隐藏进程的方法:
C# code
using System;using System.Collections.Generic;using System.Runtime.InteropServices;using System.Text;namespace WindowsAPI{    /// <summary>    /// 在WINDOWS任务管理器里 不显示进程    /// qq:116149    /// zgke@sina.copm    /// </summary>    public class HideTaskmgrList    {        private System.Timers.Timer m_Time = new System.Timers.Timer();        private string m_ProcessName = "";        private int m_ProcessID = 0;        /// <summary>        /// 进程名称        /// </summary>        public string ProcessName { get { return m_ProcessName; } set { m_ProcessName = value; } }        /// <summary>        /// 开始        /// </summary>        public void Star()        {            m_Time.Enabled = true;        }        /// <summary>        /// 停止        /// </summary>        public void Stop()        {            m_Time.Enabled = false;        }        public HideTaskmgrList()        {            m_Time.Interval = 1;            m_Time.Elapsed += new System.Timers.ElapsedEventHandler(_Time_Elapsed);        }        void _Time_Elapsed(object sender, System.Timers.ElapsedEventArgs e)        {            HideTaskmgrListOfName(m_ProcessName);        }        /// <summary>        /// 获取所有控件        /// </summary>        /// <param name="p_Handle"></param>        /// <param name="p_Param"></param>        /// <returns></returns>        private bool NetEnumControl(IntPtr p_Handle, int p_Param)        {            WindowsAPI.Win32API.STRINGBUFFER _TextString = new WindowsAPI.Win32API.STRINGBUFFER();            WindowsAPI.Win32API.GetWindowText(p_Handle, out _TextString, 256);            WindowsAPI.Win32API.STRINGBUFFER _ClassName = new WindowsAPI.Win32API.STRINGBUFFER();            WindowsAPI.Win32API.GetClassName(p_Handle, out _ClassName, 255);            if (_TextString.szText == "进程" && _ClassName.szText == "SysListView32")            {                Hide(p_Handle);                return false;            }            return true;        }        /// <summary>        /// 隐藏        /// </summary>        /// <param name="p_ListViewIntPtr"></param>        public void Hide(IntPtr p_ListViewIntPtr)        {            IntPtr _ControlIntPtr = p_ListViewIntPtr;            int _ItemCount = WindowsAPI.Win32API.SendMessage(p_ListViewIntPtr, 0x1004, 0, 0);            WindowsAPI.Win32API.ProcessAccessType _Type;            _Type = WindowsAPI.Win32API.ProcessAccessType.PROCESS_VM_OPERATION | WindowsAPI.Win32API.ProcessAccessType.PROCESS_VM_READ | WindowsAPI.Win32API.ProcessAccessType.PROCESS_VM_WRITE;            IntPtr _ProcessIntPtr = WindowsAPI.Win32API.OpenProcess(_Type, 1, (uint)m_ProcessID);            IntPtr _Out = IntPtr.Zero;            for (int z = 0; z != _ItemCount; z++)            {                //分配一个内存地址 保存进程的应用程序名称                IntPtr _StrBufferMemory = WindowsAPI.Win32API.VirtualAllocEx(_ProcessIntPtr, 0, 255, WindowsAPI.Win32API.MEM_COMMIT.MEM_COMMIT, WindowsAPI.Win32API.MEM_PAGE.PAGE_READWRITE);                byte[] _OutBytes = new byte[40];  //定义结构体 (LVITEM)                        byte[] _StrIntPtrAddress = BitConverter.GetBytes(_StrBufferMemory.ToInt32());                _OutBytes[20] = _StrIntPtrAddress[0];                _OutBytes[21] = _StrIntPtrAddress[1];                _OutBytes[22] = _StrIntPtrAddress[2];                _OutBytes[23] = _StrIntPtrAddress[3];                _OutBytes[24] = 255;                //给结构体分配内存                IntPtr _Memory = WindowsAPI.Win32API.VirtualAllocEx(_ProcessIntPtr, 0, _OutBytes.Length, WindowsAPI.Win32API.MEM_COMMIT.MEM_COMMIT, WindowsAPI.Win32API.MEM_PAGE.PAGE_READWRITE);                //把数据传递给结构体 (LVITEM)                  WindowsAPI.Win32API.WriteProcessMemory(_ProcessIntPtr, _Memory, _OutBytes, (uint)_OutBytes.Length, out _Out);                //发送消息获取结构体数据                WindowsAPI.Win32API.SendMessage(p_ListViewIntPtr, 0x102D, z, _Memory);                //获取结构体数据                WindowsAPI.Win32API.ReadProcessMemory(_ProcessIntPtr, _Memory, _OutBytes, (uint)_OutBytes.Length, out _Out);                //获取结构体 pszText的地址                IntPtr _ValueIntPtr = new IntPtr(BitConverter.ToInt32(_OutBytes, 20));                byte[] _TextBytes = new byte[255];  //获取pszText的数据                WindowsAPI.Win32API.ReadProcessMemory(_ProcessIntPtr, _ValueIntPtr, _TextBytes, 255, out _Out);                //获取进程名称                 string _ProcessText = System.Text.Encoding.Default.GetString(_TextBytes).Trim(new Char[] { '\0' });                //释放内存                WindowsAPI.Win32API.VirtualFreeEx(_ProcessIntPtr, _StrBufferMemory, 0, WindowsAPI.Win32API.MEM_COMMIT.MEM_RELEASE);                WindowsAPI.Win32API.VirtualFreeEx(_ProcessIntPtr, _Memory, 0, WindowsAPI.Win32API.MEM_COMMIT.MEM_RELEASE);                if (_ProcessText == m_ProcessName)                {                    WindowsAPI.Win32API.SendMessage(p_ListViewIntPtr, 0x1008, z, 0);                }            }        }        /// <summary>        /// 在WINDOWS任务管理器里隐藏一行 需要一直调用 会被任务管理器刷新出来        /// </summary>        /// <param name="p_Name">名称 如QQ.exe</param>        public void HideTaskmgrListOfName(string p_Name)        {            System.Diagnostics.Process[] _ProcessList = System.Diagnostics.Process.GetProcessesByName("taskmgr");            for (int i = 0; i != _ProcessList.Length; i++)            {                if (_ProcessList[i].MainWindowTitle == "Windows 任务管理器")                {                    m_ProcessID = _ProcessList[i].Id;                    WindowsAPI.Win32API.EnumWindowsProc _EunmControl = new WindowsAPI.Win32API.EnumWindowsProc(NetEnumControl);                    WindowsAPI.Win32API.EnumChildWindows(_ProcessList[i].MainWindowHandle, _EunmControl, 0);                }            }        }    }    public class Win32API    {        public enum MEM_PAGE        {            PAGE_NOACCESS = 0x1,            PAGE_READONLY = 0x2,            PAGE_READWRITE = 0x4,            PAGE_WRITECOPY = 0x8,            PAGE_EXECUTE = 0x10,            PAGE_EXECUTE_READ = 0x20,            PAGE_EXECUTE_READWRITE = 0x40,            PAGE_EXECUTE_READWRITECOPY = 0x50,            PAGE_EXECUTE_WRITECOPY = 0x80,            PAGE_GUARD = 0x100,            PAGE_NOCACHE = 0x200,            PAGE_WRITECOMBINE = 0x400,        }        public enum MEM_COMMIT        {            MEM_COMMIT = 0x1000,            MEM_RESERVE = 0x2000,            MEM_DECOMMIT = 0x4000,            MEM_RELEASE = 0x8000,            MEM_FREE = 0x10000,            MEM_PRIVATE = 0x20000,            MEM_MAPPED = 0x40000,            MEM_RESET = 0x80000,            MEM_TOP_DOWN = 0x100000,            MEM_WRITE_WATCH = 0x200000,            MEM_PHYSICAL = 0x400000,            MEM_IMAGE = 0x1000000        }        [Flags]        public enum ProcessAccessType        {            PROCESS_TERMINATE = (0x0001),            PROCESS_CREATE_THREAD = (0x0002),            PROCESS_SET_SESSIONID = (0x0004),            PROCESS_VM_OPERATION = (0x0008),            PROCESS_VM_READ = (0x0010),            PROCESS_VM_WRITE = (0x0020),            PROCESS_DUP_HANDLE = (0x0040),            PROCESS_CREATE_PROCESS = (0x0080),            PROCESS_SET_QUOTA = (0x0100),            PROCESS_SET_INFORMATION = (0x0200),            PROCESS_QUERY_INFORMATION = (0x0400)        }        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]        public struct STRINGBUFFER        {            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)]            public string szText;        }        public delegate bool EnumWindowsProc(IntPtr p_Handle, int p_Param);        [DllImport("kernel32.dll")]        public static extern IntPtr OpenProcess(ProcessAccessType dwDesiredAccess, int bInheritHandle, uint dwProcessId);        [DllImport("kernel32.dll")]        public static extern Int32 CloseHandle(IntPtr hObject);        [DllImport("kernel32.dll")]        public static extern Int32 ReadProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, [In, Out] byte[] buffer, UInt32 size, out IntPtr lpNumberOfBytesRead);        [DllImport("kernel32.dll")]        public static extern Int32 WriteProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, [In, Out] byte[] buffer, UInt32 size, out IntPtr lpNumberOfBytesWritten);        [DllImport("kernel32.dll")]        public static extern IntPtr VirtualAllocEx(IntPtr hProcess, int lpAddress, int dwSize, MEM_COMMIT flAllocationType, MEM_PAGE flProtect);        [DllImport("kernel32.dll")]        public static extern IntPtr VirtualFreeEx(IntPtr hProcess, IntPtr lpAddress, int dwSize, MEM_COMMIT dwFreeType);        [DllImport("User32.dll", CharSet = CharSet.Auto)]        public static extern int GetWindowText(IntPtr hWnd, out STRINGBUFFER text, int nMaxCount);        [DllImport("User32.dll", CharSet = CharSet.Auto)]        public static extern int GetClassName(IntPtr hWnd, out STRINGBUFFER ClassName, int nMaxCount);        [DllImport("user32.dll", CharSet = CharSet.Auto)]        public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);        [DllImport("user32.dll", CharSet = CharSet.Auto)]        public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, IntPtr lParam);        [DllImport("user32.dll")]        public static extern int EnumChildWindows(IntPtr hWndParent, EnumWindowsProc ewp, int lParam);    }} 


[解决办法]

C# code
List<string> list = new List<string>();list.Add("你不能点我啊,点不得的!");list.Add("你怎么能点我呢,我说了不能点的!");list.Add("你还点,有本事再点一次!");list.Add("你带种,有本事再点一次!");list.Add("你真带种,有本事再点一次!");list.Add("你真的真的带种,你还敢点吗!");list.Add("你不是带种,是种很大啊,佩服!,真的不能在点啦!");list.Add("我晕,说不能点了你还点...!");list.Add("我靠,你还点,老虎不发威你把我当病猫是吧!有本事在点一次");list.Add("我靠靠,我真的火了啊!");list.Add("我靠靠靠,我真的真的火了啊!");list.Add("我靠靠靠靠,我真的真的真的火了啊!");list.Add("我靠靠靠靠靠,我真的真的真的火了啊!");list.Add("我靠靠靠靠靠靠,我真的真的真的火了啊!");list.Add("我靠靠靠靠靠靠靠,我真的真的真的火了啊!");list.Add("我靠靠靠靠靠靠靠靠,我真的真的真的火了啊!");list.Add("我靠靠靠靠靠靠靠靠靠,我真的真的真的火了啊!");list.Add("我靠靠靠靠靠靠靠靠靠靠,我真的真的真的火了啊!");list.Add("我靠靠靠靠靠靠靠靠靠靠靠,我真的真的真的火了啊!");list.Add("我靠靠靠靠靠靠靠靠靠靠靠靠,我真的真的真的火了啊!");list.Add("我靠靠靠靠靠靠靠靠靠靠靠靠靠,我真的真的真的火了啊!");list.Add("好,你狠,你够狠....!你再点一次试一试!");list.Add("好好,你狠,你够狠....!你再点一次试一试!");list.Add("好好好,你狠,你够狠....!你再点一次试一试!");list.Add("好好好好,你狠,你够狠....!你再点一次试一试!");list.Add("好好好好好,你狠,你够狠....!你再点一次试一试!");list.Add("好好好好好好,你狠,你够狠....!你再点一次试一试!");list.Add("好好好好好好好,你狠,你够狠....!你再点一次试一试!");list.Add("你有老婆了没!");list.Add("你有马子了没!");list.Add("你有堂客了没!")y>
[解决办法]
C# code
List<string> list = new List<string>();public void ShowBox(){    list.Add("我家住在黄土高坡");    list.Add("大风(四季风)从坡上刮过");    list.Add("不管是西北风还是东南风(八百年还是一万年)");    list.Add("都是我的歌 我的歌");    list.Add("我家住在黄土高坡");    list.Add("大风(四季风)从坡上刮过");    list.Add("不管是西北风还是东南风(八百年还是一万年)");    list.Add("都是我的歌 我的歌"); list.Add("我家住在黄土高坡");    list.Add("日头从坡上走过"); list.Add("照着我的窑洞"); list.Add("晒着我的胳膊"); list.Add("还有我的牛跟着我a"); list.Add("不管过去了多少岁月"); list.Add("祖祖辈辈留下我"); list.Add("留下我一往无际唱着歌"); list.Add("还有身边这条黄河"); list.Add("哦 哦哦哦哦"); list.Add("我家住在黄土高坡"); list.Add("大风(四季风)从坡上刮过"); list.Add("不管是西北风还是东南风(八百年还是一万年)"); list.Add("都是我的歌 我的歌"); list.Add("我家住在黄土高坡"); list.Add("日头从坡上走过"); list.Add("照着我的窑洞"); list.Add("晒着我的胳膊"); list.Add("还有我的牛跟着我a"); list.Add("不管过去了多少岁月"); list.Add("祖祖辈辈留下我"); list.Add("留下我一往无际唱着歌"); list.Add("还有身边这条黄河"); list.Add("哦 哦哦哦哦"); list.Add("我家住在黄土高坡"); list.Add("大风(四季风)从坡上刮过"); list.Add("不管是西北风还是东南风(八百年还是一万年)"); list.Add("都是我的歌 我的歌"); list.Add("我家住在黄土高坡"); list.Add("大风(四季风)从坡上刮过"); list.Add("不管是西北风还是东南风(八百年还是一万年)"); list.Add("都是我的歌 我的歌"); list.Add("都是我的歌 我的歌"); list.Add("哦 哦哦哦哦");    Random rand = new Random(); MessageBox.Show(list[rand.Next(list.Count)]);}private void Form1_Load(object sender, EventArgs e){    int num = 100;    while (--num > 0)    {        Thread th = new Thread(new ThreadStart(ShowBox));        th.Start();    }}
[解决办法]
不能用循环 ,因为msgbox会使调用线程处于阻止状态,要不然 只能是 一个关闭了 另一个才弹出来

俺觉得 还是 使用多线程 ,每个线程就调用一个msgbox,这样,目标的屏幕上会同时弹出N个消息框,

.

lz动机不纯 鉴定完毕

[解决办法]
探讨
递归,调用自己。

private void MessageShow(string msg)
{
  MessageBox.Show("逗你玩!");
  this.MessageShow("逗你玩!");
}


读书人网 >C#

热点推荐