HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2008
0330
jill外部アプリの操作13解決


jill

リンク

2008/3/30(Sun) 21:15:14|NO.14703

外部アプリケーションの起動は"exec"で出来ることが分かったのですが、
終了させることは出来ないのでしょうか?
 それと、外部アプリの指定位置等にHSPで組んだアプリを付ける事(外部アプリが動けば同じ移動距離で動く)は可能ですか?

ご存知の方居ましたら教えてください



この記事に返信する


As

リンク

2008/3/30(Sun) 22:25:43|NO.14704

急がしいので絶対必要なものだけを提示させていただきます。
HSPのF1キー、またはGoogleなどで調べればわかるとおもいます。
#uselib #func exec WM_CLOSE SetParent GetWindowLong SetWindowLong MoveWindow 構造体
ポインタ Sendmsg FindWindowA FindWindowExA



ANTARES

リンク

2008/3/30(Sun) 23:01:54|NO.14706

>外部アプリケーションの起動は"exec"で出来ることが分かったのですが、
>終了させることは出来ないのでしょうか?
 スクリプトを書いてみました。
docs\hspext.txtのアプリケーションキャプチャー命令の項と
sample\hspext\aplkey.hspが参考になるでしょう。

> それと、外部アプリの指定位置等にHSPで組んだアプリを付ける事
>(外部アプリが動けば同じ移動距離で動く)は可能ですか?
 ウィンドウ表示の一部をHSPで描いたものに置き換えたかのように
動作させたいという意味なら、hspの標準的な機能ではできませんが、
Win32APIを駆使すれば可能です。Asさんの記事が参考になるでしょう。


#include "hspext.as" exec "notepad.exe" wait 50 aplsel "無題 - メモ帳" ; Windows95/NTの場合 if stat { aplsel "無題 - メモ帳" ; Windows98の場合 if stat: dialog "メモ帳を開けませんでした": end } button "end",*l_end stop *l_end aplact wait 50 aplkey 'F',4 wait 50 aplkey 'X' end



jill

リンク

2008/3/30(Sun) 23:13:20|NO.14708

返信有難う御座います。

API難しそうです。私に出来るのか??
ショートカットキーで終了させるなんて、イカしたアイデアですね。
思いもよりませんでした。

後者の方は既存のアプリに機能追加みたいなことがしたいのです。
具体的に言うとウインドウ内にボタン(アイコンなど)を付けるです



begriff

リンク

2008/3/31(Mon) 00:11:04|NO.14710


#uselib "user32.dll" #cfunc FindWindow "FindWindowExA" int,int,int,int #func SetParent "SetParent" int,int #func ShowWindow "ShowWindow" int,int #func SetWindowLong "SetWindowLongA" int,int,int exec "notepad.exe" a="" b="無題 - メモ帳" hwnd_= FindWindow(0,0,0,varptr(b)) if hwnd_=0:end objsize 300,200 pos 12,12 button "これは メモ帳です。",*s SetParent objinfo(stat,2),hwnd_ width 0,0,0,0 *s
こんな感じでしょうか。



ANTARES

リンク

2008/3/31(Mon) 00:19:23|NO.14711

>後者の方は既存のアプリに機能追加みたいなことがしたいのです。
>具体的に言うとウインドウ内にボタン(アイコンなど)を付けるです
 ボタンをクリックしたときの動作がアプリの内部情報を
必要としないものなら可能でしょう。
基本的に、既存のアプリに存在しない機能を後から追加するというのは
非常に困難です。
 ソースが入手できれば話は別ですが、それにしてもソースがHSPで
書かれていなければ、HSPでやるのはやはり困難です。それを可能にするより
ソースのプログラミング言語を覚える方が早いかも。



ANTARES

リンク

2008/3/31(Mon) 00:33:33|NO.14713

>begriffさん
機能しないボタンを貼りつけても意味ないでしょう。



jill

リンク

2008/3/31(Mon) 00:36:27|NO.14714

有難う御座います
思っているようなことが出来ました。。がウインドウを移動するとボタンが消えてしまいます。

目的は海外のソフトでデータファイルが言語毎にあるのですが、例えば英語から日本語に
代えたい時に一旦終了させて、言語データをdefault.datにリネームして再起動しないと
変えられないという仕様になっており、現在開発終了ということで自作することにしました。
データを流用してインターフェイス自作も考えましたが、データファイルが独自形式らしく
断念した次第であります。



As

リンク

2008/3/31(Mon) 00:37:57|NO.14715

>>ANTARESさん

begriffさんのスクリプトは、外部アプリケーションのウィンドウへの
HSPウィンドウ貼り付けのヒントになるので、このようなスクリプトを
投稿したんだと思いますよ。



begriff

リンク

2008/3/31(Mon) 00:38:29|NO.14716

そうですね
子ウィンドウでも列挙してエディットコントロールを消して(もしくは リサイズして)
新しく自分でコントロールでも貼り付けたらまた変わるかも。
メニューも親のハンドルからメニューハンドルを求め改ざん。 (メッセージ帰ってこねぇ)

でしゃばってすいません。



begriff

リンク

2008/3/31(Mon) 00:43:07|NO.14717

去年のプログラムコンテストには
HSPエディッタにコントロールを貼り付けて 検索機能上げたり
プロジェクト機能を待たせることができるソフトがありました。(愛用してます。)

頑張ればできなくもないかも。



begriff

リンク

2008/3/31(Mon) 01:13:31|NO.14719

根本的な解決にはなっていないかも だが 一応

#uselib "user32.dll" #cfunc FindWindow "FindWindowExA" int,int,int,int #func SetParent "SetParent" int,int #func ShowWindow "ShowWindow" int,int #func SetWindowLong "SetWindowLongA" int,int,int #func EnableWindow "EnableWindow" int,int #func DestroyWindow "DestroyWindow" int #func MoveWindow "MoveWindow" int,int,int,int,int,int #func GetWindowRect "GetWindowRect" int,int exec "notepad.exe" gsel 0,-1 a="" b="無題 - メモ帳" hwnd_= FindWindow(0,0,0,varptr(b)) if hwnd_=0:end b="EDIT" hwnd1_= FindWindow(hwnd_,0,varptr(b),0) dim rect,4 winx=160 ;EnableWindow hwnd1_,0 ;DestroyWindow hwnd1_ GetWindowRect hwnd1_,varptr(rect) MoveWindow hwnd1_,winx,0,rect(2)-rect(0)-winx,rect(3)-rect(1),1 bgscr 3, SetParent hwnd,hwnd_ syscolor 15 boxf width winx,rect(3)-rect(1),0,0 color sysfont 17 pos 12,12 objsize 88,21 button "終了",*s pos ,ginfo_cy+6 mes "これはHSPのウィンドウです。" pos 6,ginfo_cy+6 objsize winx-6*2,rect(3)-rect(1)-(ginfo_cy+6)-6 str_="" mesbox str_ stop *s MoveWindow hwnd1_,0,0,rect(2)-rect(0),rect(3)-rect(1),1 end



jill

リンク

2008/3/31(Mon) 01:54:46|NO.14720

有難うございました。
凄いです短時間でこんな事出来るなんて
他のウインドウをアクティブにして一旦見えないように隠して、タスクバーから
アクティブにすると消えてしまいます。カーソルでポイント当てれば現れるのですが。。

これ以上教えて頂くのは気が引けるので解決にします。代替案等模索してみます。
本当に有難う御座いました。



ANTARES

リンク

2008/3/31(Mon) 21:06:48|NO.14737

>No.14719
 すごっ!!



ONION software Copyright 1997-2018(c) All rights reserved.