开发者

How do you execute a shell command in vba that uses stdio and stdout?

开发者 https://www.devze.com 2023-03-13 13:14 出处:网络
In visual studio I want a macro that takes the selected text, pipes it to a dos command, captures the resulting stream and replaces th开发者_如何学JAVAe selected text with it.

In visual studio I want a macro that takes the selected text, pipes it to a dos command, captures the resulting stream and replaces th开发者_如何学JAVAe selected text with it.

Something like this...

Dim objSel As TextSelection = DTE.ActiveDocument.Selection
objSel.Text = RunShellCommand("beautify.rb", objSel.Text)

..where I don't know how to implement RunShellCommand.

It seems Shell("beautify.rb", 1) would execute a command and return the output, in which case all I need is .. "How do you stream text to the shell command?"


I have a work around using AutoHotKey (an excellent tool) and changing beautify.rb to take a file.

;window ctrl R  - beautify sql
#^R::
ClipSaved := ClipboardAll   
clipboard = ; Start off empty to allow ClipWait to detect when the text has arrived.
Send ^c
ClipWait  ; Wait for the clipboard to contain text.
FileDelete , c:\tmp\tmp_ahk_clip.txt
FileAppend , %clipboard% , c:\tmp\tmp_ahk_clip.txt
RunWait, %comspec% /c ""C:\...\Database\beautify.rb" c:\tmp\tmp_ahk_clip.txt > c:\tmp\tmp_ahk_clip_out.txt" ,,Hide
FileRead, clipboard, c:\tmp\tmp_ahk_clip_out.txt
Send ^v
Clipboard := ClipSaved 
ClipSaved = ; Free the memory 
return 

Now any text field in any app with sql in it can be beautiful :)

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号