Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在windows启动时运行控制台应用程序,并使其在windows上正常运行单击?_C#_.net_Console_Console Application - Fatal编程技术网

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

我需要做的事情:

  • 将它添加到windows启动中,以便在启动windows XP/7时,它应该在后台运行
  • 当剪贴板中有数据时运行应用程序
  • 创建一个独立的
    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的快捷方式。而被剪贴板更改触发(你说的“运行时”,你的意思是“允许触发/唤醒时”),这并非完全不可能,但也不是那么容易:请检查以下问题: