Tag: C#的

用相关应用程序打开文件

我想要求帮助打开从关联的应用程序的C#应用​​程序的文件。 我试过这个: ProcessStartInfo pi = new ProcessStartInfo(file); pi.Arguments = Path.GetFileName(file); pi.UseShellExecute = true; pi.WorkingDirectory = Path.GetDirectoryName(file); pi.FileName = file; pi.Verb = "OPEN"; Process.Start(pi); 或这个: Process.Start(file); 这两个示例中的stringfile都表示试图打开的文件的完整path。 现在,除了使用ACDSee应用程序的(jpg)图像以外,一切运行良好。 Irfanview协会运作良好,微软办公文件也是如此。 试图打开与acdsee相关联的jpg图像后,它只是运行通知区域中的acdsee,并不打开该文件。 我发现,在registryCLASSES_ROOT的* .jpg图像中,有一个ACDSee.JPG值作为关联的应用程序,在这个键的下方有一个shell- > Open-> Command一个path: "C:\Program Files\ACD Systems\ACDSee\ACDSee.exe" /dde 我觉得这个怪异/dde是原因,为什么我不能打开文件。 我意识到,在相同的registry键 – >打开有一些DDEExec键值input值[open("%1")] 对于Irfan查看或其他检查的应用程序没有一个ddeexec,只是正常的命令一样 "C:\Program Files (x86)\IrfanView\i_view32.exe" "%1" 可以从命令行运行%1换文件名后运行,但我不能从命令行中的acdsee条目运行命令:( 所以我的问题是,我怎样才能设置ProcessStartInfo对象,以确保它将运行所有的文件,因为它将在双击浏览器,标准和这DDEExec的? 有没有其他的东西像我知道的DDEExec ? 感谢和抱歉我的EN

在C#中使用存储过程输出参数

我有一个问题,从Sql Server存储过程返回一个输出参数到一个C#variables。 我已经阅读了其他文章,不仅在这里,而且在其他网站上,我不能得到它的工作。 这是我目前有的。 目前我只是试图打印回来的价值。 以下代码返回一个空值。 我试图返回的是主键。 我曾尝试使用@@IDENTITY和SCOPE_INDENTITY() (即SET @NewId = SCOPE_IDENTITY() )。 存储过程: CREATE PROCEDURE usp_InsertContract @ContractNumber varchar(7), @NewId int OUTPUT AS BEGIN INSERT into [dbo].[Contracts] (ContractNumber) VALUES (@ContractNumber) Select @NewId = Id From [dbo].[Contracts] where ContractNumber = @ContractNumber END 打开数据库: pvConnectionString = "Server = Desktop-PC\\SQLEXPRESS; Database = PVDatabase; User ID = sa; PASSWORD […]

我如何运行需要提升和等待的subprocess?

Win 7 / UAC让我疯狂。 在我的C ++应用程序中,我需要运行一个需要在Windows 7上升级的可执行文件。我想要解决这个问题并等待它完成后再继续。 什么是最简单的方法来做到这一点? 我通常通过CreateProcess()来做这种事情,但是对于那些需要提升的可执行文件来说,这是失败的。 我尝试运行使用cmd.exe /c …通过CreateProcess ,它的工作,但popup一个丑陋的cmdterminal窗口。 我正在阅读的ShellExecute()将允许提升,但它似乎并不容易等待exe完成使用ShellExecute() 。 会像system()一样简单的工作吗? 任何其他的想法,非常感谢!

如何发送文本到记事本在C#/ Win32中?

我正在尝试使用SendMessage来记事本,这样我就可以插入书面文本而不使记事本成为活动窗口。 过去我使用SendText做过这样的事情,但是那需要记事本的重点。 现在,首先我要检索Windows句柄: Process[] processes = Process.GetProcessesByName("notepad"); Console.WriteLine(processes[0].MainWindowHandle.ToString()); 我已经确认这是记事本的正确处理,同样在Windows Task Manager 。 [DllImport("User32.dll", EntryPoint = "SendMessage")] public static extern int SendMessage(int hWnd, int Msg, int wParam, int lParam); 从这里开始,我无法使SendMessage在我的所有实验中都能正常工作。 我会走错方向吗?

如何控制popen stdin,stdout,stderrredirect?

我很困惑如何popen()redirect标准input,标准输出和stderr的subprocess在UNIX中。 关于popen()的手册页在这方面不是很清楚。 电话 FILE *p = popen("/usr/bin/foo", "w"); 派生一个subprocess并执行一个带有参数“-c”,“/ usr / bin / foo”的shell,并将这个shell的stdin(redirect到foo的stdin),stdoutredirect到p。 但是,stderr会发生什么? 它背后的一般原则是什么? 我注意到,如果我在foo中打开一个文件(使用fopen,socket,accept等),并且父进程没有标准输出,则会为其分配下一个可用的文件编号,即1。 这提供了来自fprintf(stderr,…)等调用的意外结果。 这可以通过写作来避免 FILE *p = popen("/usr/bin/foo 2>/dev/null", "w"); 在父母程序中,但是他们有更好的方法吗?

如何捕获一个lambdaexpression式unique_ptr?

我已经尝试了以下内容: std::function<void ()> getAction(std::unique_ptr<MyClass> &&psomething){ //The caller given ownership of psomething return [psomething](){ psomething->do_some_thing(); //psomething is expected to be released after this point }; } 但它不编译。 有任何想法吗? 更新: 如上所示,需要一些新的语法明确指定我们需要将所有权转移给lambda,我现在想的是下面的语法: std::function<void ()> getAction(std::unique_ptr<MyClass> psomething){ //The caller given ownership of psomething return [auto psomething=move(psomething)](){ psomething->do_some_thing(); //psomething is expected to be released after this point }; } 会不会是个好人选? […]

在内存中创buildPDF而不是物理文件

如何在内存stream中创buildPDF,而不是使用itextsharp创build物理文件。 下面的代码是创build实际的PDF文件。 相反,如何创build一个byte []并将其存储在byte []中,以便通过函数返回 using iTextSharp.text; using iTextSharp.text.pdf; Document doc = new Document(iTextSharp.text.PageSize.LETTER, 10, 10, 42, 35); PdfWriter wri = PdfWriter.GetInstance(doc, new FileStream("c:\\Test11.pdf", FileMode.Create)); doc.Open();//Open Document to write Paragraph paragraph = new Paragraph("This is my first line using Paragraph."); Phrase pharse = new Phrase("This is my second line using Pharse."); Chunk chunk = new […]

如何用FILE *写入内存缓冲区?

有什么办法来创build一个内存缓冲区作为文件*。 在TiXml中,它可以将xml打印到FILE *中,但是我似乎无法将其打印到内存缓冲区中。

如何缩小std :: vector?

有没有办法调整std :: vector来降低容量,当我不再需要以前保留的空间?

R_X86_64_32S和R_X86_64_64重定位是什么意思?

当我尝试在64位FreeBSD中编译一个C应用程序时出现以下错误: 在创build共享对象时不能使用R_X86_64_32S; 用-fPIC重新编译 什么是R_X86_64_32S重定位,什么是R_X86_64_64 ? 我已经search了这个错误,这可能是因为 – 如果有人能说出R_X86_64_32S的真正含义,那将是非常棒的。