C# 在windows启动时运行控制台应用程序,并使其在windows上正常运行单击?
我想创建一个控制台应用程序。应用程序的目的是在复制粘贴时将本地驱动器更改为网络驱动器; 如果我复制“C# 在windows启动时运行控制台应用程序,并使其在windows上正常运行单击?,c#,.net,console,console-application,C#,.net,Console,Console Application,我想创建一个控制台应用程序。应用程序的目的是在复制粘贴时将本地驱动器更改为网络驱动器; 如果我复制“C:\TempEI4” 它应该粘贴“\\MY IP address\C$\TempEI4” 我需要做的事情: 将它添加到windows启动中,以便在启动windows XP/7时,它应该在后台运行 当剪贴板中有数据时运行应用程序 创建一个独立的exe,以便它可以在任何系统上工作 我已经做了它的编码,但需要做一些修改,它不符合我的要求。请帮我做同样的事 using System; using Sys
C:\TempEI4
”
它应该粘贴“\\MY IP address\C$\TempEI4
”
我需要做的事情:
exe
,以便它可以在任何系统上工作using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
using System.Net;
using System.Net.Sockets;
namespace CopyPasteNetworkPath
{
class Program
{
[DllImport("user32.dll")]
internal static extern bool OpenClipboard(IntPtr hWndNewOwner);
[DllImport("user32.dll")]
internal static extern bool CloseClipboard();
[DllImport("user32.dll")]
internal static extern bool SetClipboardData(uint uFormat, IntPtr data);
[STAThread]
static void Main(string[] args)
{
Program p = new Program();
OpenClipboard(IntPtr.Zero);
var copiedText = System.Windows.Forms.Clipboard.GetText();
IPAddress ipAdress = p.LocalIPAddress();
string networkIP = @"\\" + ipAdress.ToString().Trim() + @"\" + "C$\\";
string networkAddress = string.Empty;
if(copiedText.StartsWith(cDrive))
{
networkAddress = copiedText.Replace(cDrive,networkIP);
}
if(!string.IsNullOrEmpty(networkAddress))
System.Windows.Forms.Clipboard.SetText(networkAddress,System.Windows.Forms.TextDataFormat.UnicodeText);
}
/// <summary>
/// Geting IP
/// </summary>
/// <returns></returns>
private IPAddress LocalIPAddress()
{
if (!System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable())
{
return null;
}
IPHostEntry host = Dns.GetHostEntry(Dns.GetHostName());
return host
.AddressList
.FirstOrDefault(ip => ip.AddressFamily == AddressFamily.InterNetwork);
}
private static string cDrive = "C:\\";
}
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用System.Runtime.InteropServices;
Net系统;
使用System.Net.Sockets;
命名空间CopyPasteNetworkPath
{
班级计划
{
[DllImport(“user32.dll”)]
内部静态外部bool OpenClipboard(IntPtr hWndNewOwner);
[DllImport(“user32.dll”)]
内部静态外部bool CloseClipboard();
[DllImport(“user32.dll”)]
内部静态外部布尔设置剪贴板数据(uint uFormat、IntPtr数据);
[状态线程]
静态void Main(字符串[]参数)
{
程序p=新程序();
OpenClipboard(IntPtr.Zero);
var copiedText=System.Windows.Forms.Clipboard.GetText();
IPAddress IPAddress=p.LocalIPAddress();
字符串networkIP=@“\\”+ipAddress.ToString().Trim()++@“\”+“C$\\”;
string networkAddress=string.Empty;
如果(复制文本开始与(cDrive))
{
networkAddress=copiedText.Replace(cDrive,networkIP);
}
如果(!string.IsNullOrEmpty(网络地址))
System.Windows.Forms.Clipboard.SetText(网络地址,System.Windows.Forms.TextDataFormat.UnicodeText);
}
///
///获取IP
///
///
专用IP地址LocalIPAddress()
{
如果(!System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable())
{
返回null;
}
IPHostEntry主机=Dns.GetHostEntry(Dns.GetHostName());
返回主机
.地址列表
.FirstOrDefault(ip=>ip.AddressFamily==AddressFamily.InterNetwork);
}
私有静态字符串cDrive=“C:\\”;
}
}
比方说,我有一个应用程序需要在Windows启动时在后台运行。目的是修改文本。假设它会将复制的文本更改为大写。如果我复制“
我是Rahul
”,它应该粘贴“我是Rahul
”。希望对于外行来说目的很清楚您已经编写的代码满足您的需求的哪些子集,哪些子集不满足?我想在windows启动时运行该应用程序。如果我有剪贴板文本,它应该运行windows首次启动时,您如何在剪贴板上有一些内容?(除非我完全误解了你。)@Brain--假设我有一个应用程序需要在windows启动时在后台运行…目的是更改文本…假设它会将复制的文本更改为大写…如果我复制“I am Rahul”,它应该粘贴“I am Rahul”。现在我明白你的意思了吗。启动时运行的问题基本上不是编程问题,而是部署应用程序。您应该在Start
菜单文件夹下的Startup
文件夹中复制exe的快捷方式。而被剪贴板更改触发(你说的“运行时”,你的意思是“允许触发/唤醒时”),这并非完全不可能,但也不是那么容易:请检查以下问题: