我在一家使用 C# 制作应用程序的公司工作。最近,一位客户要求我们重建一个用 PHP 编写的应用程序。该应用程序从车载盒子接收 GPS 数据,并将其处理成可用的信息。
GPS 设备的制造商有一个 PHP 类,可以解析接收到的信息并提取坐标。我们正在考虑将 PHP 类重写为 C# 类,以便我们可以使用它并对其进行调整。来了,在制造商的网站上有一行文字让我毛骨悚然:
“传输数据的编码格式和内容会不断变化。这是由于新模块固件版本实现了附加功能而导致的,这使得您几乎不可能对其进行记录并自行正确解码。”
所以我现在正在寻找一个选项来使用“不断变化的”PHP 类并在 C# 中访问它。有些东西链接了一个外壳,只暴露了我需要的一些功能。但我不知道该怎么做。任何人都可以帮我找到解决方案吗?
如何使用 C# 运行命令提示符命令?假设我想按顺序运行这些命令:
cd F:/File/File2/...FileX/
ipconfig
ping google.com
Run Code Online (Sandbox Code Playgroud)
或类似的东西......有人可以做这个方法:
void runCommands(String[] commands)
{
//method guts...
}
Run Code Online (Sandbox Code Playgroud)
这样您的输入是一系列字符串命令(即[“ipconfig”,“ping 192.168.192.168”,“ping google.com”,“nslookup facebook.com”),应在特定的单个命令提示符下执行它们放入数组的顺序。谢谢。
有没有办法从 C# 执行 Go 函数?例如,对于 Python,我会使用 Ironpython。
我知道我可以生成一个进程来执行 Go 脚本,但如果可能的话,我真的不想回退到这样的解决方案。
谷歌搜索没有显示任何内容,那么有没有办法使用 API 来做到这一点?还是我必须回退流程?
对于C#项目,我正在尝试使用ffmpeg从视频文件中提取.wav文件(在Windows中).您可以通过在命令行上运行它来执行此操作:"ffmpeg -i inputvid.avi +'extra parameters'+ extracted.wav".这显然会将输入.avi文件中的音频提取到指定的.wav文件中.
现在,我可以在C#中轻松运行此命令,以便创建所需的.wav文件.但是,我不需要这个wav文件留在硬盘上.出于性能原因,如果ffmpeg可以暂时将此文件保存到内存中,那将会好得多,这可以在我的C#程序中使用.执行我的程序后,不再需要.wav文件.
所以实际问题是:我可以将输出文件从程序重定向到内存吗?如果这是可能的,我怎么能在C#中读到这个?
我知道这是一个很长的镜头我很怀疑它是否可能,但我总是可以问......
提前致谢.
我构建了一个小脚本,用于检查具有给定名称的USB Stick是否已插入计算机,但现在我想围绕此脚本构建一个服务,以观察Stick是否插入.起初我尝试用filewatcher执行此操作并在Stick上创建一个文件,但是如果从PC上取下棒并重新插入filewatcher dosent意识到它.以下脚本检查Stick是否插入,但我需要一个脚本来循环此DriveInfo.GetDrive函数.我不知道最好的方法是在这个函数周围建立一个10秒的定时器循环,或者.NET Framework中是否有可移动设备的观察者类.脚本来了:
public static void Main()
{
Run();
}
public static void Run()
{
var drives = DriveInfo.GetDrives()
.Where(drive => drive.IsReady && drive.DriveType == DriveType.Removable);
if (drives.Count() > 0)
{
foreach (var drive in drives)
{
if (drive.VolumeLabel == "TESTLABEL") Console.WriteLine("USB Stick is plugged in");
}
}
}
Run Code Online (Sandbox Code Playgroud) 有没有一种方法可以启动/停止其他网络中服务器的Windows服务
(不是\\<server name>)来自asp.net页面?
我尝试使用ServiceController,但只有在同一网络中才可以使用。
我正在制作一个程序来处理一些视频文件.
我正在使用ffmpeg可执行文件将多个文件合并到一个文件中.此命令需要几分钟才能完成,因此,我需要一种方法来"监视"输出,并在GUI上显示进度条.
查看以下stackoverflow主题:
我做了这个代码:
Process ffmpeg = new Process
{
StartInfo =
{
FileName = @"d:\tmp\ffmpeg.exe",
Arguments = "-f concat -safe 0 -i __sync.txt -c copy output.mp4",
UseShellExecute = false,
RedirectStandardOutput = true,
CreateNoWindow = true,
WorkingDirectory = @"d:\tmp"
}
}
ffmpeg.EnableRaisingEvents = true;
ffmpeg.OutputDataReceived += (s, e) => Debug.WriteLine(e.Data);
ffmpeg.ErrorDataReceived += (s, e) => Debug.WriteLine($@"Error: {e.Data}");
ffmpeg.Start();
ffmpeg.BeginOutputReadLine();
ffmpeg.WaitForExit();
Run Code Online (Sandbox Code Playgroud)
当我运行此代码时,ffmpeg开始合并文件,我可以在Windows任务管理器上看到ffmpeg进程,如果我等待足够长时间,ffmpeg完成作业没有任何错误.但是,Debug.WriteLine(e.Data)永远不会调用它(Debug窗口上没有输出).试图改为Console.WriteLine(再次,没有输出).
那么,在此之后,我尝试了另一个版本:
Process ffmpeg = new Process
{
StartInfo =
{
FileName …Run Code Online (Sandbox Code Playgroud) 我只想从C sharp代码执行Jar文件并从jar获取返回值.可能吗?
如果是这样,请给我示例代码.
我试过跟随的事情,
string path = "C:\\Documents and Settings\\Desktop";
Process process = new Process();
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.RedirectStandardError = true;
process.StartInfo.UseShellExecute = false;
process.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
process.StartInfo.CreateNoWindow = false;
process.StartInfo.FileName = "C:\\Program Files\\Java\\jre6\\bin\\java.exe";
process.StartInfo.Arguments = "-jar \"" + path + "\\simple.jar\"";
process.Start();
String s = process.StandardOutput.ReadToEnd();
Run Code Online (Sandbox Code Playgroud)
这里simple.jar有一个主要的方法,它将采用争论并在控制台中打印传递的arguemnets,否则它在控制台中不打印任何争论.我试过上面的代码(String s = process.StandardOutput.ReadToEnd();)能够读取控制台值.
但是我想通过在jar中传递值来执行一个方法,并且方法会返回我的hashmap(集合)值(我不知道它是否可能).请给我一些建议.
这几天我学习了一些关于 ASP 的知识。我想将此 PHP 代码行转换为 ASP,但我有点坚持:
$online = exec('netstat -a -n |find "5816" |find "ESTABLISHED" /c') +1;
Run Code Online (Sandbox Code Playgroud)
我尝试创建一个变量来存储数据,但无法弄清楚如何检查端口 5816 并计算连接数。感谢帮助!
它基本上应该是在 cmd 中运行的命令来检查端口和否。由它建立的连接!
我是c#programing的新手.我想在c#中使用c ++的int system("command string")这样的函数.
例如:我们可以使用system("winrm") in c++"winrm"命令的函数在命令提示符下执行命令.system()functon在stdlib.h头文件中.我想知道c#中是否有这种功能.如果有,请告诉我.或者我可以在c#中使用相同的system()方法吗?如果是,那么告诉我如何使用?谢谢 !!
我正在尝试从C#运行命令行脚本。我希望它在没有外壳的情况下运行并将输出放入我的字符串输出中。它不喜欢p.StartInfo行。我究竟做错了什么?我没有运行p.StartInfo.FileName =“ YOURBATCHFILE.bat”之类的文件,如How To:在C#中执行命令行,获取STD OUT结果。我需要设置“ CMD.exe”和命令行字符串。我已经尝试过p.Start(“ CMD.exe”,strCmdText); 但这给了我错误:“无法使用实例引用访问Memer'System.Diagnostics.Process.Start(string,string)';而应使用类型名称对其进行限定。”
string ipAddress;
System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
string strCmdText;
strCmdText = "tracert -d " + ipAdress;
p.StartInfo("CMD.exe", strCmdText);
string output = p.StandardOutput.ReadToEnd();
p.WaitForExit();
Run Code Online (Sandbox Code Playgroud)