2011-03-17 86 views
0

我正在使用perl打開一個管道到pgnuplot.exe來輸出繪圖命令。例如,如何停止從Windows命令行使用gnuplot窗口時彈出窗口?

open ($PLOT, "|pgnuplot") or die "error: gnuplot not found!"; 

print $PLOT <<EOPLOT; 

set term postscript eps enhanced "Arial" 20 
set output "somefile.eps" 

## do some plotting here ## 

EOPLOT 

close $PLOT; 

我注意到了gnuplot的一個窗口總是彈出並抓住我的鼠標和鍵盤的焦點瞬間。這使劇情腳本運行時難以使用計算機。

有沒有辦法阻止pgnuplot打開窗口?

回答

0

是的,當在Windows(CreateProcessAPI)中啓動程序時,可能會要求主窗口隱藏或最小化而沒有焦點(以及其他選項)。但我不知道perl是否提供了一個簡單的方法來實現這一點。

您可能會考慮使用batch operation來代替(將您的繪圖命令放在一個文件中,然後將文件名傳遞給gnuplot)。

+0

我只是試着寫命令的文件,並從Perl中調用批處理操作。效果是窗口現在打開的時間要短得多,但它仍然抓住鍵盤和鼠標。因此,我無法在後臺運行繪圖腳本時輸入內容。 – devil 2011-03-17 05:51:02

+0

@devil:你是否嘗試使用'wgnuplot'而不是'pgnuplot'來批量操作? 'pgnuplot'旨在用於其他控制檯程序,並將重新使用現有的控制檯窗口。如果你的應用程序不是控制檯模式,'pgnuplot'會創建一個新的控制檯,所以使用'wgnuplot'代替。 – 2011-03-17 06:08:18

+0

我將pgnuplot更改爲wgnuplot,在行爲上沒有差異。我使用bash腳本從MSYS調用perl。不知道這是否重要。 – devil 2011-03-17 06:22:15

0

您可以防止通過Win32模塊顯示子控制檯窗口:

use Win32; 
Win32::SetChildShowWindow(0);