private void button1_Click(object sender, EventArgs e)
{
timer1.Enabled = true
i = textBox1.Text.Trim().Length
}
string str = ""
int i=0
private void timer1_Tick(object sender, EventArgs e)
{
if (str.Length <i)
{
str = textBox1.Text.Trim().Substring(textBox1.Text.Trim().Length - 1) + str
}
textBox1.Text = textBox1.Text.Trim().Substring(0, textBox1.Text.Trim().Length - 1)
if (textBox1.Text.Length <= 0)
{
textBox1.Text = str
}
}
private void button2_Click(object sender, EventArgs e)
{
timer1.Enabled = false
str = ""
}
//需要引用Microsoft.Win32命名空间 写的有点麻烦private void Form1_Load(object sender, EventArgs e)
{
listview1.Checkbox=true//就是listview每行前面有个复选框, 这个属性名我忘了具体怎么写的了
listview1.View=View.Detials
//HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall 此键的子健为本机所有注册过的软件的卸载程序,通过此思路进行遍历安装的软件
RegistryKey key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall")
string[] key1 = key.GetSubKeyNames()//返回此键所有的子键名称
List<string>key2 = key1.ToList<string>()//因为有的项木有"DisplayName"或"DisplayName"的键值的时候要把键值所在数组中的的元素进行删除
RegistryKey subkey = null
try
{
for (int i = 0i <key2.Counti++)
{
subkey = key.OpenSubKey(key2[i])//通过list泛型数组进行遍历,某款软件项下的子键
if (subkey.GetValue("DisplayName") != null)
{
if (subkey.GetValue("DisplayIcon") != null)
{
string path = subkey.GetValue("DisplayIcon").ToString()
string SubPath = path.Substring(path.Length - 1, 1)//截取子键值的最后一位进行判断
if (SubPath == "o" || path.IndexOf("exe") == -1)//如果为o 就是ico 或 找不到exe的 表示为图标文件或只有个标识而没有地址的
{
key2.RemoveAt(i)//首先删除数组中此索引的元素
i -= 1//把循环条件i的值进行从新复制,否则下面给listview的项的tag属性进行赋值的时候会报错
continue
}
listView1.Items.Add(subkey.GetValue("DisplayName").ToString())//把软件名称添加到listview控件中
if (SubPath == "e")//如果为e 就代表着是exe可执行文件,
{
listView1.Items[i].Tag = path//则表示可以直接把地址赋给tag属性
continue
}
if (SubPath == "0" || SubPath == "1")//因为根据观察 取的是DisplayIcon的值 表示为图片所在路径 如果为0或1,则是为可执行文件的图标
{
path = path.Substring(0, path.LastIndexOf("e") + 1)//进行字符串截取,
listView1.Items[i].Tag = path//则表示可以直接把地址赋给tag属性
continue
}
}
else
{
key2.RemoveAt(i)//首先删除数组中此索引的元素
i -= 1//把循环条件i的值进行从新复制,否则下面给listview的项的tag属性进行复制的时候会报错
continue
}
}
else
{
key2.RemoveAt(i)//首先删除数组中此索引的元素
i = i - 1//把循环条件i的值进行从新复制,否则下面给listview的项的tag属性进行复制的时候会报错
}
}
}
catch (Exception ex )
{
MessageBox.Show(ex.Message)
}
}
private void btn_start_Click(object sender, EventArgs e)
{
for (int i = 0i <listView1.Items.Counti++)
{
if (listView1.Items[i].Checked)
{
System.Diagnostics.Process.Start(listView1.Items[i].Tag.ToString())//启动所选中的软件
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)