; inport_paste_place.ahk ; ▽ 概要 ; 現在開かれている書類のアクティブレイヤーの前面に新規レイヤーを作成し、 ; ドロップしたファイルのカレントレイヤーのオブジェクトをインポートして閉じます。 ; 新規レイヤー名は拡張子を除いたファイル名になります。 ; 複数のファイルをドロップした場合はその数だけレイヤーを作成し、そこにインポートします。 ; インポートする場所は、現在の書類の用紙左上を原点座標としたときの同じ場所です。 ; 用紙設定が異なるファイルでは同じ場所にインポートされないのでご注意ください。 ; Inkscapeが複数起動していた場合は、前面の書類がインポートされる対象になります。 ; ▽ 使い方 ; inport_paste_place.ahkをinkscape.exeと同じ場所に置いて実行してください。 ; これはインポート用ですので、ダブルクリックしてもInkscapeは起動しません。 ; インポートされるファイルをまず開き、インポートしたいファイルをアイコンにドロップ ; または"SendTo"にショートカットを置くなどして実行します。 ; ▽ 仕様 ; 「開くファイルを選択」ダイアログのロケーションバー(フルパス入力欄)を隠していると ; ファイルオープンに失敗します。 ; 「レイヤーを追加」ダイアログの文字列はInscapeのバージョンによって異なるので、0.45インス ; トーラ版以外では多分動作しません。 #NoTrayIcon ClipSaved := ClipboardAll Process, Exist, inkscape.exe If ErrorLevel <> 0 { MsgBox, 4148, Inport_Paste_Place, 現在開かれている書類にオブジェクトをインポートします。`n本当に実行しますか? IfMsgBox, No { ExitApp } WinActivate, ahk_pid %ErrorLevel% WinGetTitle, caption, A Loop %0%{ GivenPath := %A_Index% Loop %GivenPath%{ chk_filetype() WinActivate, %caption% file_open() WinWaitActive, %filename% - Inkscape delay() Send, ^a^c Sleep, 500 WinActivate, %caption% Send, !la WinWaitActive, レイヤーを追加 ;WinWaitActive, Add Layer Clipboard = %noext% Send, ^v!a Sleep, 500 Send, ^!v WinClose, %filename% - Inkscape } } } else{ MsgBox, 16, error, Inkscapeが起動していません。`nスクリプトを終了します。 ExitApp } Clipboard := ClipSaved ClipSaved = MsgBox, done. return chk_filetype(){ global LongPath = %A_LoopFileLongPath% FileSpec=%LongPath% SplitPath,FileSpec,filename,,ext,noext If ext not in svg,svgz,ggr,ai.svg,ani,bmp,gif,ico,cur,jpeg,jpe,jpg,pcx,png ,pbm,pgm,ppm,ras,tga,targa,tiff,tif,wbmp,xbm,xpm,0 { MsgBox, 16, error, 対応してないファイルタイプです。`nスクリプトを終了します。 Exit } } file_open(){ global Sleep, 500 Send, ^o WinWaitActive, 開くファイルを選択 ;WinWaitActive, Select file to open Clipboard = %LongPath% ClipWait Send, ^v Sleep, 500 Send, {enter} FileGetSize, size, %LongPath%, K } delay(){ global If (size = 0) Exit If ((size < 200) && (size >= 1)) Sleep, 500 If ((size < 500) && (size >= 200)) Sleep, 2000 If ((size < 1000) && (size >= 500)) Sleep, 8000 If (size >= 1000) Sleep, 16000 }