したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | |

■■■20レス以内で済むF-BASICの質問はこちらへ■■■

1F橋:2003/12/19(金) 20:48
20レス以内程度(20回程度の投稿)で終わりそうなF-BASICの質問はこちらでお願いします
短い質問のスレッドがいくつも立つより1つのスレッドで固まっていた方が長期に渡り見ることができ
かつ保存も簡単かと…

(いや…私だけでなく…皆さんも簡単のはずなんですが…(汗(笑)))

掲示板の内容の長期保存にご協力頂ける様よろしくお願いします

43アラキ:2004/07/28(水) 18:33
お世話になります。
最近、インターネット接続をダイアルアップからブロードバンドLANにしました。
下記について、ご質問したく、もしご存じの方がおられましたらよろしくお願い
致します。
Webページからデータ受信速度のスピードテストを測定しています。また、
スピードを向上するためのソフトもインストールしました。それによりまして
スピードも3倍になりました。

ご質問
Win98、Win2000で使用していますが、パソコンをWinXPにしても
思ったほどスピードは期待できないと聞いた事がありまが?。
通信にはあまり関係なく、見かけ上はパソコンの内部処理が早くなっている為、
早くなったような気がすると言っていました。もしそうでありますと
ダウンロードの時間に差がないと思って良いのでしょうか。
実際はどの様になりますか。ご存じの方がおりましたらよろしくお願い致します。

44F橋:2004/07/28(水) 23:39
>>42
あまりお役に立たないレスですいません

>なにかいい手はないかと、今もゴニョゴニョやっています・・・・
あると思うんですが…私ではここまででした。すいませんです

45F橋:2004/07/28(水) 23:50
>>43
>Win98、Win2000で使用していますが、パソコンをWinXPにしても
>思ったほどスピードは期待できないと聞いた事がありまが?。
私が知っている範囲です

Windows95, 98SEは電話回線を想定した設定になっており
WindowsME, 2000, XPはブロードバンド回線を想定している様です

Windows95, 98, 98SEでブロードバンド用に(フリーソフトなどを使って)速度を速くした場合は
ME,2000,XPとそれほど変わらないはずです

ブロードバンドでのネットの早さ
←遅い                      速い→
95,98,98SE(標準)<<<<<<ME,2000,XP<全Windows+ダウンロードパラメータの調整

私の中ではこんな形だと思います(一部実体験有り)

-----


パラメータの調整の話はなんとなくしか分からないのですが…
電話回線用の設定は少しずつデータをもらっていると思ってます
(データが壊れやすいから少しずつもらっている?)
ブロードバンド用の設定はたくさんのデータを一気に読み込んでいると思ってます

1.データの受信
2.読み込んだデータのチェック
3.2のチェックでデータが正常なら次の読み込み。異常なら1から繰り返す

電話回線の場合はデータが異常で再読み込みをする時が多いから
一度に読み込むデータが少ない方が効率がいいはずで
ブロードバンドの場合は異常な場合が少ないから一括で読み込んでいる。と考えてます

ネットの速度を速くするソフトはパラメータの変更が主だと思っております
またそういうソフトは実際にパラメータを色々と変えたのを試して今の回線に一番速い
設定に変えてくれるようです
この辺りの設定が同じならばOSのみでの差は(私は)少なく感じます

46アラキ:2004/07/29(木) 10:17
ご返答くださいましてありがとうございました。
ご説明してくださいました、Windows95, 98SEは電話回線をWindowsME, 2000, XPはブロードバンド回線の想定につきましては大変参考になりました。
Windows95, 98, 98SEは速度を速くした場合はME,2000,XPとそれほど変わらない件につきましては体験の中で納得させられました。
また、電話回線用、ブロードバンド用のデータの流れ方について、とても解りやすく、ご説明されていましたので理解する事ができました。お礼を申し上げます。

47TOKO:2004/07/30(金) 01:53
42>>
もじゃさん>こんばんは
意味を取り違えていたらゴメンナサイ・・
フォームを常時前面に出すということでしたら、下記の方法はどうでしょうか?

#include "Windows.bi"

declare function SETWINDOWPOS lib "user32" alias "SetWindowPos" (byval HWND as long, byval HWNDINSERTAFTER as long, byval X as long, byval Y as long, byval CX as long, byval CY as long, byval UFLAGS as long) as long

’手前に表示するかしないかのフラグ
var shared FLG as integer

’hWndInsertAfter の設定
#define HWND_TOP 0'手前にセット
#define HWND_BOTTOM 1'後ろにセット
#define HWND_TOPMOST -1 '常に手前にセット
#define HWND_NOTTOPMOST -2'解除
’wFlags の設定
#define SWP_SHOWWINDOW &H40'表示する
#define SWP_NOSIZE &H1'サイズを設定しない
#define SWP_NOMOVE &H2'位置を設定しない

var shared MAINFORM as object
var shared BUTTON1 as object
MAINFORM.ATTACH GETHWND
BUTTON1.ATTACH GETDLGITEM("BUTTON1")

declare sub MAINFORM_START edecl ()
sub MAINFORM_START()
'初期設定(フラグ)
FLG = 1
end sub

'コマンドボタンの処理
declare sub BUTTON1_ON edecl ()
sub BUTTON1_ON()
var RST as long

if FLG = 0 then
'「常に手前に表示」を解除
RST = SETWINDOWPOS(MAINFORM.GETHWND, HWND_NOTTOPMOST, 0, 0, 0,0, SWP_SHOWWINDOW or SWP_NOMOVE or SWP_NOSIZE)
FLG = 1
BUTTON1.SETWINDOWTEXT "「常に手前に表示」する"
MAINFORM.SETWINDOWTEXT "現在は「ノーマル」状態です"
else if FLG = 1 then
'「常に手前に表示」をセット
RST = SETWINDOWPOS(MAINFORM.GETHWND, HWND_TOPMOST, 0, 0, 0, 0, SWP_SHOWWINDOW or SWP_NOMOVE or SWP_NOSIZE)
FLG = 0
BUTTON1.SETWINDOWTEXT "「常に手前に表示を解除」する"
MAINFORM.SETWINDOWTEXT "現在は「常に手前に表示」状態です"
end if
end sub

while 1
WAITEVENT
wend
stop
end

48もじゃ:2004/07/30(金) 10:20
>47
TOKOさま、ありがとうございました。
さっそく試させていただき、見事!にうまくいきました。

が、とても残念なことが・・・・・・
もう少し、お付き合い頂けませんでしょうか?

FBで作成したアプリを最前面(Z順の先頭)に持ってくることには成功しますが、
アクティブ(フォーカスのある状態)にはなりません。
(「SETWINDOWPOS」で調べましたら、そういう仕様だそうですねぇ)

他のスレッドがアクティブの時に、強引にこちら側をアクティブにするにはどうすれば
良いでしょうか?
かなり高度な技が必要だと思いますが、この投稿をご覧の方でご存知の方がおられましたら、
ぜひご教授お願い致します。

(聞いてばかりで、ほんとにすいません)

49TOKO:2004/07/30(金) 11:27
>>48
TIMERを使う方法ではダメですか?

var shared TIMER1 as object
TIMER1.ATTACH GETDLGITEM( "TIMER1" )

TIMER1.SETINTERVAL nnnn ←(間隔:秒数)
TIMER1.ENABLE -1

declaresub timer1_timer edecl ()
MAINFORM.SETFOREGROUNDWINDOW
end sub
トカ(^^;)

50もじゃ:2004/07/30(金) 14:24
>49
TOKOさま、アドバイスありがとうございます。

残念ながらWin2000やXPでは、「SETFOREGROUNDWINDOW」が働いてくれません。
タイマーを使用して定期的に「フォーカスひっこ抜き」をするのはいいのですが、
肝心のフォーカスは来てくれないようです。

OSの仕様で、他のスレッドからフォーカスを奪うのはなかなか大変だそうです。

しくしく・・・・・・

51TOKO:2004/07/30(金) 19:24
>>50 【SetForeGroundWindow の件】
>Win2000やXPでは、「SETFOREGROUNDWINDOW」が働いてくれません。
Windows98およびWindows2000ProはOK、WindowsXPはNGのようです。試してみました。
>1分おきぐらいに自ら最前面に移動し、フォーカスを持ってくるようにしたいです。
>タイマーを使用して定期的に「フォーカスひっこ抜き」をするのはいいのですが、
>肝心のフォーカスは来てくれないようです。
私の環境はWindowsXPですが、常時最前面表示させ、他のアプリに移動していても1分ごとに強制アクティブにする。

sub MAINFORM_START()
TIMER1.SETINTERVAL 6000
TIMER1.ENABLE -1
FLG = 0
FORM_STATE
end sub

declare sub BUTTON1_ON edecl ()
sub BUTTON1_ON()
FLG = not(FLG)
FORM_STATE
end sub

sub FORM_STATE()
var RST as long
if FLG = 0 then
RST = SETWINDOWPOS(MAINFORM.GETHWND, HWND_NOTTOPMOST, 0, 0, 0,0, SWP_SHOWWINDOW or SWP_NOMOVE or SWP_NOSIZE)
BUTTON1.SETWINDOWTEXT "「常に手前に表示」する"
MAINFORM.SETWINDOWTEXT "現在は「ノーマル」状態です"
else
RST = SETWINDOWPOS(MAINFORM.GETHWND, HWND_TOPMOST, 0, 0, 0, 0, SWP_SHOWWINDOW or SWP_NOMOVE or SWP_NOSIZE)
BUTTON1.SETWINDOWTEXT "「常に手前に表示を解除」する"
MAINFORM.SETWINDOWTEXT "現在は「常に手前に表示」状態です"
end if
end sub

declare sub TIMER1_TIMER edecl ()
sub TIMER1_TIMER()
MAINFORM.SETFOREGROUNDWINDOW
end sub
(一部省略)で1分ごとにアクティブになりました。自己流のためひょっとしてとんでもないことをしているかも・・

52chigaya:2004/07/31(土) 02:46
XP は使った事が無いので勝手な妄想ですが・・・
F−BASICの「SETFOREGROUNDWINDOW」が出来ないって事は、

#include "windows.bi"
declare function WinApi_SetForegroundWindow& lib "user32" alias "SetForegroundWindow"( byval hWnd& )
ApiReturn& = WinApi_SetForegroundWindow( GETHWND )

直接APIに動いて貰う事も、XPは出来ないんでしょうか?

久々のプログラミングなので、ちょっと自信が無いですが・・・。
ますます、OSのバージョンアップがし辛いなぁ・・・。

53TOKO:2004/07/31(土) 08:39
>>52
chigayaさん>
お久しぶりです。
あれ以降、chigayaさんやnisiiさんのAPI関連記事で勉強させていただいています。
APIのSetForegroundWindowを試してみましたが、windowsXPではできないようです。

54nisii:2004/07/31(土) 09:58
SDKによると SetForegroundWindow を使って欲しくないそうですね。

特にWindowsXPは、タスクバーなどの順位が上げられたみたいで、
SetForegroundWindow を発行するソフトが
アプリケーションエラーを起こしやすいなど、いっそう厄介です。

消極的ですが、ユーザーにボタン操作してもらって切り替える案ではダメですか?


#include "windows.bi"

common shared MAINFORM as object
MAINFORM.ATTACH GETHWND

var shared EDIT1 as object
EDIT1.ATTACH MAINFORM.GETDLGITEM( "EDIT1" )
EDIT1.SETFOCUS

do
WAITEVENT
loop
end

'-------------------------------------
' EDIT1がフォーカスを失ったときのイベント
declare sub EDIT1_KILLFOCUS edecl ()
sub EDIT1_KILLFOCUS()

var COUNT as long
var RC as long

' EDIT1のフォーカスを失ったら、1秒待つ
for COUNT = 1 to 100 : wait 1 : next

' トップモストのダイアログを使ってユーザーにボタン操作してもらい、
' フォーカスを強制的に戻す
MAINFORM.SETTOPMOSTWINDOW -1
RC = MAINFORM.MESSAGEBOX( "確認" , "EDIT1以外をクリックしないでください。" , 0 , 3 )
EDIT1.SETFOCUS
MAINFORM.SETTOPMOSTWINDOW 0

end sub

55F橋@役立たず管理人:2004/08/01(日) 13:47
もじゃさん>
私は分かりませんのでよろしくです

TOKOさん>
サンプルありがとうございます

chigayaさん>
お久しぶりです!ご参加ありがとうございます!

nisiiさん>
いつもいつもありがとうございます


-----
凄い。F-BASICのプロが3人もレスしている…解決できないとは思えない

56上村:2004/08/02(月) 00:14
XPで動作するかわかりませんが

フォームを最前面表示にしておいて

sub TIMER1_TIMER()
  SHOWWINDOW 0
  SETFOCUS
  SHOWWINDOW -1
end sub

こんな感じに記述してみたらどうでしょうか
Windows2000 Server では動作しました。
スマートなやり方ではないのでもっとスマートな方法も探してみます

57TOKO:2004/08/02(月) 01:10
>>56
XPでも動作します。
ただ、一旦アクティブになると他のアプリに制御を移した場合でも、キャプションバーが
アクティブのままの状態になるようです。
あぁ〜 暑くて眠れない・・・ エアコン買うまでもないし

58もじゃ:2004/08/02(月) 14:40
>51 >53 >57 TOKOさま
>52 chigayaさま
>54 nisiiさま
>56 上村さま
そして管理人のF橋さま

貴重なアドバイスを頂きまして、ほんとうにありがとうございました。
一人ではきっと解決できなかったであろう問題を、皆様の助言によりおおむねやっつける
ことが出来ましたので、お礼申し上げると共にご報告致します。

【私の環境はWinXP/Proです】

#include "WINDOWS.BI"

var shared MAINFORM as object :MAINFORM.ATTACH GETDLGITEM("MAINFORM")
var shared TIMER1 as object :TIMER1.ATTACH GETDLGITEM("TIMER1")
var shared EDIT1 as object :EDIT1.ATTACH GETDLGITEM("EDIT1")

declare function SETWINDOWPOS lib "user32" alias "SetWindowPos" (byval HWND as long, byval HWNDINSERTAFTER as long, byval X as long, byval Y as long, byval CX as long, byval CY as long, byval UFLAGS as long) as long

declare sub MAINFORM_START edecl ()
sub MAINFORM_START()
TIMER1.SETINTERVAL 1000
TIMER1.ENABLE -1
end sub

declare sub TIMER1_TIMER edecl ()
sub TIMER1_TIMER()
beep
A= SETWINDOWPOS(MAINFORM.GETHWND, -1, 0, 0, 0, 0, &H43)
MAINFORM.SHOWWINDOW 0
MAINFORM.SETFOCUS
MAINFORM.SHOWWINDOW -1
EDIT1.SETFOCUS
A= SETWINDOWPOS(MAINFORM.GETHWND, -2, 0, 0, 0, 0, &H43)
end sub

while -1 :WAITEVENT :wend


↑こんな感じでやってみました。(教えて頂いたソースを組替えてみただけですけど・・・)

メインフォーム上に、エディットボックス1個とタイマーコントロール1個を用意しました。
10秒おきにタイマーイベントが発生するようにしています。
タイマーイベントの発生時にBEEP音を鳴らしてみました。
そしてまず強制的に「最前面化(トップモースト)」を行っています。
次にメインフォームを非表示に、その状態でメインフォームにフォーカス移動、
更にメインフォームを表示に。
そしてエディットボックスにフォーカス設定。
最後に「最前面化」を解除しています。

これで私のやりたかったことが「一応」できるようになりました!

サンプルプログラムを起動したあと、1回目のタイマーイベントまで待ちます。
それ以降は、メモ帳やEXCELなどを自由に立ち上げます。
例えばメモ帳を立ち上げた場合、カーソルはそちらに移りキーボードからの入力は
メモ帳内に反映されます。
しかし、タイマーイベントが発生すると「お見事!!」、カーソルがサンプルプログラムに
戻ってきます。
これで24時間待機させているプログラムを作成し、常にカーソル(フォーカス)を獲得
し続けることができそうです。
ただ、まだ完璧ではないようで条件によっては「カーソルのたぐり寄せ」が行われない
場合もあります。

最初はまったく思い通りにいかず、あきらめようと思いましたが、皆様からいろいろなお知恵を
拝借しましてようやくここまでこれました。
これからもぜひ宜しくお願いします、ありがとうございました。

59FBASIC利用者:2004/08/29(日) 20:28
お世話になります。

IEの有無について、お尋ね致します。

F-BASIC6で作成しました本ソフトを起動しますとデスクトップ上に本ソフトのフォームが表示されます。
そのフォームで作成メニューをクリックしてデスクトップ上にInternet Explorerの有無を知り、有る事が確認できましたら
Internet Explorerのハンドルを取得したいと考えていますが、有無を調べる事は可能でしょうか。
ご存知の方がおりましたら、お教え願えれば幸いです。宜しくお願い致します。

60上村:2004/08/30(月) 00:13
ハンドルというのがWindowHandleならば

declare function APIFINDWINDOW lib "user32" alias "FindWindowA" (byval LPCLASSNAME as string, byval LPWINDOWNAME as string) as long
var IE_HWND as long
IE_HWND = APIFINDWINDOW("IEFrame",byval 0)

こんな感じのコードで取得できると思われます。

61FBASIC利用者:2004/08/30(月) 00:54
上村 様

ご返答を下さいましてありがとうございました。
ご指導頂ました IEのハンドルを取得するコードで確認しましたら
IEのハンドルが取得できました。
以前は始めダミーでタイトル名をつけてから行っていましたので
長いコードとなりました。
上村様からのご指導をして頂くまではできないものとあきらめていました。
お陰様で今後においては、大変助かりました。
貴重なご投稿をして頂きまして、本当にありがとう御座いました。
心より深くお礼を申し上げます。

FBASIC利用者

62佐藤:2004/08/30(月) 06:15
佐藤と申します。よろしくお願い致します。

テキスト部分を『メニュー』→『編集』→『すべて選択』で選択する事は出来まし
た。その後テキストの選択された全てをAPI関数で消す方法で
何かご存知の方がいましたら、教えて下さい。
宜しくお願いします。

63上村:2004/08/30(月) 16:53
APIではありませんが
F-BASICで選択部分を変更するには
REPLACESEL関数が使用できます。

選択部分を消去するには
EDIT.REPLACESEL ""
このように記述すれば消えます

もしテキスト全体を消去するのであれば
EDIT.SETWINDOWTEXT ""
で消去したほうが高速だと思います

64F橋@役立たず管理人:2004/08/30(月) 18:46
(上村さん。ご回答ありがとうございました)

65佐藤:2004/08/30(月) 19:37
上村さんより、ご回答頂きました佐藤です。
遅くなりましたが、お礼を申し上げます。
選択部分を消去するREPLACESEL関数の
EDIT.REPLACESEL ""については用いた事はありましたが、
今回により勉強になりました。ありがとうございました。
今後も、何かありましたら宜しくお願いいたします。

66佐藤:2004/09/03(金) 10:16
お世話になっています佐藤と申します。
本当に申し訳ありませんが再度下記のすべて選択を戻すにつきまして
2点の質問につきまして宜しくお願い致します。

自作ソフトでIEの画面(ホームページ)をすべて選択→コピーして
クリップボードに文字をコピーしています。

RET = POSTMESSAGE(IE_HWND,&H111,&HA044,0) 'すべて選択
RET = POSTMESSAGE(IE_HWND,&H111,&HA042,0) 'コピー

すべて選択されますと画面全体が青色になります。
すべて選択を戻す(取り消す)ためソフトでマウスをクリックしています。
メニューに戻すが有れば問題ないのですが(メモ帳には有りました)
質問1
マウスを使用しない方法ですべて選択を戻す(取り消す)方法は有りますでしょうか。

タスクバーに最小化されましたIEもすべて選択→コピーでクリップボードに
文字をコピーできます。最大化に戻した場合、すべて選択のままになっています。
マウスを移動する事が出来ないため取り消しが出来ないものと考えています。
質問2
タスクバーに最小化された状態ですべて選択を戻す(取り消す)方法は有ります
でしょうか。

以上の2点について、ご指導して頂ければと願います。

67佐藤:2004/09/04(土) 10:43
お世話になっています佐藤と申します。
2点の質問についてはウィンドウハンドルを頼りに制御する方法では
限界があることが確認できました。
大変お世話になりました。ありごとうございました。

68TOKO:2004/09/04(土) 14:05
佐藤さん>
>マウスを使用しない方法ですべて選択を戻す(取り消す)方法は有りますでしょうか。
IE画面がアクティブあるいはアイコン化されている場合でも自作ソフトではマウスを使うんです
よネ^^;
選択画面の「取り消し」のみでしたら、アクティブ画面およびアイコン化されていても
RET = POSTMESSAGE(IE_HWND,&H111,&HA043,0)で取り消されるようですが・・・
画面に現れない他の動作をしているかどうかは不明です。

それとも、マウスを使用しないで「CTRL+Z」などで「戻る」動作をさせたいのでしょうか?

69佐藤:2004/09/04(土) 15:07
TOKOさん
ご回答下さいましてありがとうございました。
ご指導して下さいましたRET = POSTMESSAGE(IE_HWND,&H111,&HA043,0)の記述を
追加してみましたら目的が達成する事ができました。それによりマウスの移動、
マウスの設定、Wait命令などの必要がなくなり、大変助かりました。
他でも今回の件で質問の問い合わせを致しました。その結果限界と判断しました。
TOKO様のご回答をして下さいましたお陰で解決する事ができました。
本当にありがとうございました。心よりお礼を申しあげます。

70佐藤:2004/09/04(土) 16:36
TOKOさん
佐藤と申します。先ほどはありがとうございました。
何度に渡り本当にすいみません。
ご回答していただきました
RET = POSTMESSAGE(IE_HWND,&H111,&HA043,0)の中で
WM_COMAND(&HA043)は何の意味なのかSPY++で
IEのメニュー項目から探しては見ましたが、探すことができませんでした。
どのようにすれば探すことが出来るのか、ご都合が良ければ、
ご指導願えればと思います。宜しくお願い致します。

71佐藤:2004/09/04(土) 17:28
マウスを使用しないで「CTRL+Z」などで「戻る」動作
のご指導でしたが、うっかりして・・・
本当に申し訳ありませんでした。

72TOKO:2004/09/04(土) 19:29
佐藤さん>
それを聞かないで!! *^^;)
フリーソフトでパラメータを指定してSendMessage(PostMessage)するデバッグ補助ツール
SendMessage V1.0というのがありますが。
それを使ってwParamを変えたらタマタマ目的(らしい)動作をしたのでお知らせしたまでです。
はじめは、マウスクリックで選択解除なのでWM_LBUTTONDOWNを試したり、UNDOなどを試し
てみたのですがダメで、最後に上記を試してみたというわけです。
動作としては、ペーストのような感じがするのですが・・・
というのは、
RES = POSTMESSAGE&(IE_HWND,WM_COMMAND,&HA044,0) 'すべて選択
'RES = POSTMESSAGE&(IE_HWND,WM_COMMAND,&HA042,0) 'コピー
として
RES = POSTMESSAGE&(IE_HWND,WM_COMMAND,&HA043,0)
を実行すると前もってコピーされていた内容がペーストされますので・・
そういうわけですので、あくまでも自己責任でお願いいたします。

73佐藤:2004/09/04(土) 21:51
TOKOさん
ご返答して頂きましてありがとうございました。
色々と試していただき、時間も割いてくださまして、この場をお借りして
厚くお礼を申し上げます。他でも問い合わせしましたが・・・
お陰様でTOKOさんのご指導により解決する事ができました。
また、タスクバーに最小化状態から最大化に戻しても、
問題なくすべて選択が消えていました。本当にありがとうございました。
私の方でお願いして、TOKOさんのご好意で教えて頂きましたので
自己責任は当然だと思います。本当にお世話になりました。

74tanaka:2004/09/05(日) 17:44
初歩的な質問で申し訳ありません。宜しくお願い致します。
F−BasicからMicrosoftメモ帳 のフォームを
アクティブ後、REC = SetForegroundWindow(MENO_HWND )
今度はF−Basic自身のMAINFORMをアクティブしてもアクティブになりません。
REC = SetForegroundWindow( FBASIC_HWND ) のFBASIC_HWNDのハンドルは
問題ありません。MAINFORM.SETTOPMOSTWINDOW (-1)、MAINFORM.SETFOCUSなど
試しはしましたがダメでした。一度、F−Basicを抜けて外部のフォーム
(Microsoftメモ帳)をアクティブしますとF−Basicで作成した
フォームはアクティブできなくなるのでしょうか。その場合は、
手動でクリックしない限りダメなのでしょうか。ご教授頂ければ幸いです。

75TOKO:2004/09/05(日) 18:39
tanakaさん>
RES = API_SETFOREGROUNDWINDOW(MENO_HWND)でアクティブ後
F-Basic自身のメインフォームをアクティブにするんですね?
RES = API_SETFOREGROUNDWINDOW(MAINFORM.GETHWND)でアクティブになりませんか?

WindowsXP、F-Basic 6.3 U003

76TOKO:2004/09/05(日) 18:53
IEのパッチをインストールするとスクロールしすぎる不具合が発生
http://support.microsoft.com/default.aspx?scid=kb;ja;832270
http://internet.watch.impress.co.jp/cda/news/2003/11/12/1095.html

9/2 WindowsXP SP2 インストール
どういう訳か本日午後から、表記の件で悩まされております。
IEに限らず、F-Basicのプログラム編集画面でもスクロールバーがひとりでに最下段まで
移動してしまうというものです。

ただ、F-Basicで作成したリストボックスは、今のところ大丈夫のようです。

77tanaka:2004/09/05(日) 19:19
TOKOさん

早々、ご教授願えましてお礼を申します。
考え方で特に問題がない事が知れました。
そこで、整理して最短で作成しましたら問題なく動作しました。
もう一度F−Basic自身を見直せば何とかなると
思えましたのでうまくいきそうです。ご教授のお陰です。
ありがとうございました。

78TOKO:2004/09/06(月) 09:30
佐藤さん>
RES = POSTMESSAGE&(IE_HWND,WM_COMMAND,&HA043,0)
一度コピーしたものをペーストしているようです。文字数の多いところで試すと時間が
かかりますし、
RES = POSTMESSAGE&(IE_HWND,WM_COMMAND,&HA042,0)の1行を抜くと選択解除にはなりま
せん。

RES = POSTMESSAGE&(IE_HWND,WM_LBUTTONDOWN,0,0)
RES = POSTMESSAGE&(IE_HWND,WM_LBUTTONUP,0,0)
のように、マウスをDOWNおよびUPの両方を送るといいようです。

79佐藤:2004/09/06(月) 12:58
TOKOさん
ご投稿下さいまして本当にありがとうございました。
あの後、TOKO さんの言われていましたペースト
(貼り付け)につきましてテキスト入力フィールド(input type="text")
で確認しましたら貼り付け、切り取りのComandを調べる事が出来ました。
貼り付けを実行しますとテキスト入力フィールドに同じ内容のものが
貼り付けされましたので安全を見て中止致しました。
せっかくご指導していただきましたが申し訳ありませんでした。
今回のTOKOさんのご指導で色々な事を学びました。
また、マウスを画面上でクリックする事も中止しました。
理由はクリックの所がボタン等でしたら飛んで行く事もありますので
(更新等でも消えますが更新中に管理者がホームページを変更することもありまので)
ご指導下さいました下記の記述で行わせてもらいます。
RES = POSTMESSAGE&(IE_HWND,WM_LBUTTONDOWN,0,0)
RES = POSTMESSAGE&(IE_HWND,WM_LBUTTONUP,0,0)
結果は、ご報告させて頂きますので宜しくお願い致します。

80佐藤:2004/09/06(月) 16:01

TOKOさん
ご報告いたします。
色々と試しましたので遅くなりました。宜しくお願い致します。
お陰様で目的が達成する事ができました。
TOKOさんの、ご指導して頂きましたお陰です。
ホームページ内でクリックする必要が無くなりました。その為に
コマンドボタンのクリックされ無いので
他のホームページに移動する心配がなくなりました。
ソフトではペースト・マウスの移動部分を外すだけで
問題ないソフトになりました。
TOKOさんのご指導を受けない限りこの方法は、
思い付かなかったと思っています。
重ねて厚くお礼を申し上げます。
幾度にも渡り、質問して申し訳ありませんが、
下記の2点●時間を入れないと読めないみたいです?
●先頭カーソル?につきまして、同じ動作現象になりますか
ご確認して頂ければ幸いであります。宜しくお願い致します。


''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
var IE_HWND as long
IE_HWND = WINAPI_APIFINDWINDOW("IEFrame",byval 0)

if hex$(IE_HWND)<>"0" then

RET = WINAPI_POSTMESSAGE(IE_HWND,&H111,&HA044,0) 'すべて選択
RET = WINAPI_POSTMESSAGE(IE_HWND,&H111,&HA042,0) 'コピー

wait 350 '●時間を入れないと読めないみたいです。コピーの終了で効率良い
        wait時間を考えましたが'スタート同時にRET = 1になる為この方法としました。

R$ = GETCBTEXT

EDIT1.SETWINDOWTEXT R$

VAR CurPos As POINTAPI  ' マウス関連のAPI宣言
  var USRRECT as RECT_API

 ' ウインドウをアクティブにする
  ApiReturn& = WinApi_SetForegroundWindow( IE_HWND )
  'マウスの左ボタンを押す
MOUSE_EVENT &H2, 0, 0, 0, 0  'このようにすればNGになるRET = MOUSE_EVENT (&H2, 0, 0, 0, 0)又カッコも外す
'マウスの左ボタンを離す
MOUSE_EVENT &H4, 0, 0, 0, 0 'このようにすればNGになるRET = MOUSE_EVENT (&H4, 0, 0, 0, 0)又カッコも外す
EDIT1.SETSELTEXT 0,0,1:EDIT1.SETFOCUS '●こちらでは先頭にカーソルが正常に移る事もあります。

end if
exit sub
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

81佐藤:2004/09/06(月) 20:19
TOKOさん
ご報告いたします。
先頭のカーソルにつきましては
EDIT1.SETSELTEXT 0,0,1:EDIT1.SETFOCUSの前にフォアグラウンドウィンドウ
SETFOREGROUNDWINDOW(FBASIC)を追加しました。今の所は安定しています。
お陰様で落ち着きましたので少し様子を見てみます。
何度もに渡りまして、ご回答をして頂きまして誠に感謝しています。
ありがとうございました。

82佐藤:2004/09/06(月) 21:06
TOKOさん
81の追記です。
フォアグラウンドウィンドウ前に下記の3行を忘れていました。
RET = GetWindowRect( FBASIC, usrRECT ) 'FBASICウインドウ全体の座標を取得
  幅=usrRECT.left: 高=usrRECT.top
RET = SETCURSORPOS(幅,高)
を追記しました。

83TOKO:2004/09/07(火) 06:59
佐藤さん>
詳細にわたりありがとうございます。解決しているようですが、#78で転写ミスがありました。
RES = POSTMESSAGE&(IE_HWND,WM_LBUTTONDOWN,0,0)
RES = POSTMESSAGE&(IE_HWND,WM_LBUTTONUP,0,0)の部分ですが、「IEFrame」のハンドル
ではなく、「選択されている」フレームのハンドルでした。
同じプログラムで検証するのが一番だろうと思うのですが、再現のしようもなく私は下記
の方法でテストしていました。HP上でマウスは使用しないということから、
EDIT1→ペースト用
TEXT1→取得したハンドルの確認表示用
BUTTON1→全て選択・コピー
BUTTON2→「選択フレーム」のハンドル取得、マウスのDown・Upで選択解除
BUTTON3→EDIT1クリアし、EDIT1にペースト、カーソルは開始位置に

BUTTON1→BUTTON2にはタイムラグがあるので、wait のことは考えていませんでした。
MOUSE_EVENTは使っていませんので、複数フレームの場合の指定はどうしているのかと思
っていました。
これまで画像・インターネット関連の必要性を感じたことがなくやってきたものですから、
勉強になります。
また、男サザエさんのごとくオッチョコチョイですので、#76の症状が出たので検索したら
検索したら、URLが出てきました。よくよく読んでみると古い話でしたね^^;)
で、どういう訳か今は症状が治まっています。

84佐藤:2004/09/07(火) 07:38
TOKOさん
ご返答下さいましてありがとうございました。
複数フレームの場合ですがこの場合に限り直接マウスで選択画面をクリック
してます。また、BUTTON1→BUTTON2のタイムラグにつきましては
パソコンのスピード、OS、その他により違ってくると思っていますので
それぞれにあった一番良い方法(クリックボードでコピーが終了した例えばGet関数
)をいま探しています。もし良い方法が有りましたらご報告させていただきます。
色々と、ありがとうございました。

85TOKO:2004/09/07(火) 12:48
佐藤さん>
一つ気になったことがありましたので・・・
SetForegorundWindowですが#49〜#54を見ておいてください。

86佐藤:2004/09/07(火) 14:03
TOKOさん
貴重な情報を提供下さいましてありがとうございました。
言われて思い出しましたが、一度同じ事を何処かでみた覚えがあります。
#49〜#54には詳細な情報でとても参考になりました。
今のところWindows2000でも動作していますが、XPではまだ確認していません。
タイムラグに関しまして現状(Wait)で使用していきます。一応、完成と致しました。
以前から思っていた事ですが、ボタン一つでホームページ及びその他の画面の
文字を簡単にテキスト画面に表示出来れば便利かと考えていました。(実際探せば有ると思うのですが)
手動と自動で選択出来るようにもしてみました。
長期に渡りまして、ご投稿して頂けるとは思ってもみませんでした。
色々と勉強させて頂きました。心より厚くお礼を申しあげます。

87佐藤:2004/09/17(金) 17:27
前回は大変お世話になりました佐藤と申します。
ありがとうございました。

再三に渡りまして本当に申し訳ありませんが
質問させてもらいました。宜しくお願い致します。
説明に不十分な所がありましたら、お許し下さい。

Windows98のNotepad.exe(ノート)のフォームの境界部分をポイントして
この状態でドラック(左クリックで離す)するまでフォームは透明です。
Windows2000では透明でなくドラックするまでもエディタ画面(白色)
として大きくなっていました。F-Basicで作りましたソフトをWindows2000で
行いますとドラックするまでフォーム(灰色)の拡大となります。
境界部分をドラックするまでエディタ画面として大きくする事は可能なのでしょうか。
ご存知の方がいましたら、ご指導願えればと思います。

88TOKO:2004/09/17(金) 18:22
Windows2000の画面のプロパティ→効果→視覚効果で『ドラッグ中にウィンドウの内容を
表示する』にチェックが入っていませんか?

89佐藤:2004/09/17(金) 18:39
TOKOさん
ご回答して頂きましてお礼を申し上げます。
前回は何度ものご指導をして頂きましてありがとうございました。
今回の質問の件に於きましてはチェックが入っていました。
チェックを外して見ましたらWin98と同じ動作になり解決する事ができました。
重ねてお礼を申し上げます。

90Fbasic使用者:2004/09/19(日) 12:15
お世話になります。
Fbasicにつきましてお尋ねします。
Fbasicの実行ファイルを起動してメインフォームがディスクトップに
表示された場合にFbasicで作成された物かそれ以外(VB等)で作成したか
実行ファイルから見分ける事はできますか。それにつきましてご伝授ください。
よろしくお願いします。

91Fbasic使用者:2004/09/19(日) 13:03
一部記述の訂正をします。
実行ファイルから見分ける事はできますか。を
メインフォームから見分ける事はできますか。に
訂正します。

92Fbasic使用者:2004/09/20(月) 01:26
開発環境を見分けるのは難しい事がわかりました。

93Fbasic使用者:2004/09/25(土) 14:45
お世話になります。
コマンドボタン表示のサイズ変更につきまして

BUTTON1のテキスト内容を登録で表示しています。
そのテキスト内容(登録)表示のサイズ変更は可能でしょうか。
ご存知の方がおりましたら宜しくお願い致します。

94TOKO:2004/09/25(土) 15:40
Fbasic使用者さん>プログラム上で変更したいのですね?

var shared MainForm as object
var shared Button1 as object

MainForm.attach gethwnd
Button1.attach getdlgitem("Button1")

declare sub MainForm_Start edecl ()
sub MainForm_Start()
Button1.MoveWindow 100,50
Button1.SetWindowSize 80,25
Button1.SetFontName "MS 明朝"
Button1.SetFontSize 14
Button1.SetWindowText "abcde"
end sub

95Fbasic使用者:2004/09/25(土) 16:04
TOKOさん
ご回答して頂きましてお礼を申し上げます。
そうですプログラム上で変更したいのです。
説明不足がありまして申し訳ありませんでした。
リファレンス、サンプルプログラムで探しては見ましたが
探せませんでした。
ご回答して頂きました記述に従いましてプログラムの
編集に入りました。本当にありがとうございました。

96Fbasic使用者:2004/09/26(日) 20:22
お世話になります。
Windows98とWindows2000の文字サイズにつきまして
OSの文字サイズの調整は下記の方法で行っています。
フォームのコマンドボタン、テキスト、・・・
の文字サイズはWindows98と比べWindows2000は−1小さくなるために
プラットフォームのID = LPVERSIONINFORMATION.DWPLATFORMIDで
プラットフォームのIDからSETFONTSIZE 12+1 として1を加えて調整しています。
コマンドボタン等が特に数多いソフトでは、行っていません。そこで
最初にプラットフォームのIDでWindows98又はWindows2000を判断
しましたらSETFONTSIZEの調整をしなくとも簡単に出来る方法の有無
についてご指導して頂ければと思います。
宜しくお願い致します。

97TOKO:2004/09/26(日) 21:42
このHPのF-BASIC小ネタ集-Windows9xとNTのフォントサイズを揃える-で
nisiiさんが投稿されていますが明示的に指定するのが簡単な方法かと思います。

var shared text(30) as object
var shared edit(10) as object

for i = 1 to 30
text(i).attach getdlgitem("text"+trim$(str$(i)))
select case i
case 1 to 5
text(i).setfontsize 12
case 6 to 20
text(i).setfontsize 14
case else
text(i).setfontsize 20
end select
next i

for i = 1 to 10
edit(i).attach getdlgitem("edit"+trim$(str$(i)))
edit(i).setfontsize 14
next i

98Fbasic使用者:2004/09/26(日) 22:45
TOKOさん
早々と、ご返答下さいましてありがとうございました。
もしコマンドボタン等の数多いソフトでも可能になりますと、
自分にとっては大変貴重な情報となります。
今から記述の意味を調べて使用してみていきます。
前回に渡り大変お世話になりました。
本当にありがとうございました。

99Fbasic使用者:2004/09/27(月) 06:53
TOKOさん
以前から下記のeditを変数で扱えないかと思い続けていました。
今回その関数を知る事ができました。
プログラムを下へスクロールしますと32700当たりで停止状態になります。
別のパソコンでも同じでしたのでプログラムの長さの限界を感じました。
しかし、翻訳は問題無くできてます。
ご指導して頂きました関数を使えばかなり短くする事ができると思いますので
貴重な情報を提供して頂き、心よりお礼を申し上げます。

100りゅう:2004/09/27(月) 17:26
USBのモデムを使用したいのですが
232Cの制御で上手くいかないようです。
私は持っていませんが、使ってる人が、232C用のソフトでは動作しない
と言ってきたものですから。

プロトコル制御は、何か違うのでしょうか?
ボーレート指定
comfn=freefile
baud 9600,1
open "COM2:(S8N1N8)" as #comfn
出力
print #
入力
line input #
で行っています

よろしくお願い申し上げます。

101iwakifarm:2004/10/11(月) 19:22
USBを制御することはF-BASICでは無理です。
また、COM2とするとCOMポートに行ってしまいますので
基本的にUSBを通して通信出来ないことになります。
LPT0: というようにUSB0というな書式があれば使えたかもしれません。
実際にUSB経由のプリンタにF-BASICでLPT0:としても、
印刷できません。

102りゅう:2004/10/12(火) 14:51
ありがとうございました。
VBで作成したものを起動させました・・・

103Fbasic使用者:2004/10/15(金) 19:32
ユーザーID:登録の方法につきまして
お世話になります。下記の件につきまして宜しくお願い致します。
概要
C:\Winows\SYSTEM・・内にF-BASIC(TOUROKU.PRN)でファイルを作成して
登録者、ユーザーIDを登録しています。Windows98、WindowsXPをC:でありますと
C:\Winows\SYSTEMに登録されますが、Windows2000ではWinowsは
無くWINNT\SYSTEMでしたのでC:\Winows\SYSTEM・・内に(TOUROKU.PRN)の
ファイル作成を考えています。SYSTEM内のファイル作成につきましては、以前
F-BASICのサーポートセンターに問い合わせましたが特に規制は無いと言っていました
ので使用しました。その後、別の所からSYSTEM内には個人的なファイル作成の読み書きは
適当でないとも聞きました。今回Windows2000用にWINNT\SYSTEMに(TOUROKU.PRN)を
使用出来るようにするか、またレジストリを使用しない別の方法がありましたらとも
考えています。別の方法がありましたら、ご指導をお願い出来ればと思います。

104TOKO:2004/10/15(金) 20:55
WindowsおよびSystemフォルダは下記で取得できます。

#include "Windows.bi"

Declare Function Api_GetWindowsDirectory& Lib "Kernel32" Alias "GetWindowsDirectoryA" (ByVal lpBuffer$, ByVal nSize&)
Declare Function Api_GetSystemDirectory& Lib "Kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer$, ByVal nSize&)

var WinPath as string * 255
var SysPath as string * 255
var WinPathLen as long
var SysPathLen as long

WinPathLen = Api_GetWindowsDirectory&(WinPath, len(WinPath))
SysPathLen = Api_GetSystemDirectory&(SysPath, len(SysPath))
print "Windows フォルダ:" & left$(WinPath,instr(WinPath,chr$(0))-1)
print "System フォルダ:" & left$(SysPath,instr(SysPath,chr$(0))-1)

A$ = input$(1)
stop
end

105Fbasic使用者:2004/10/15(金) 22:07
TOKOさん
ご返答下さいましてありがとうございました。
お送り下さいました詳細なプログラム
を使用することで各OSのWindowsおよびSystemフォルダが取得できました。
お陰様でWindows2000ではWINNT\SYSTEMSフォルダにユーザーIDファイルを
作成する事ができました。
日頃から何度もに渡りまして、詳細な、ご指導をして頂きまして
厚く心よりお礼を申し上げます。

106MASUKO:2004/10/21(木) 12:31
初めまして、6.3ユーザのMASUKOと申します。
プログラム初心者のくせにゲーム作ろうという野望抱いてる野郎です。
大変恐縮ですが、質問させていただいてよろしいでしょうか?

AlphablendAPIを使って透過転送を試みたのですが、ピクチャボックスに反映されてないみたいなんです。
GetDCでピクチャボックスのデバイスコンテキスト指定して、リフレッシュをかけるだけじゃダメなんでしょうか…?
ちょっと、全体的な流れからはずれてしまう書き込みかもしれませんが、よろしければ皆様の叡智をお貸し下さい。(ぺこり)

107シマヅ:2004/10/22(金) 23:52
◆管理人・F橋様◆
 訳あって、ハンドル(シマチャン)を「シマヅ」(F-BASIC購入予定者欄も)に変更をお願いします。お手数をお掛けして申し訳ありません。
最近は質問などの書込みをしておりませんが、月に何回かは必ず本ホームページを見て勉強&情報収集させて頂き、プログラミング・レベルの向上に役立ております。また何かありましたら、書込みさせて頂きますので今後とも宜しくお願いします。

108シマヅ:2004/10/23(土) 00:03
◆管理人・F橋様 【追伸】◆
 度々、申し訳ありませんが、ハンドルの「シマヅ」への変更はF-BASIC購入予定者欄だけで結構です。舌足らずの記述で申し訳ありませんでした。

109TOKO:2004/10/23(土) 09:39
MASUKOさん>
AlphaBlendはあまり使ったことはないのですが、PICTURE1からPICTURE2へ画像を転送する
だけでしたらサンプルを載せてあります。
それ以上のことは試しておりません。^^;)
http://tokovalue.hp.infoseek.co.jp/index.htm

110MASUKO:2004/10/23(土) 11:26
TOKOさん、ありがとうございます。
おかげさまで、ようやく転送に成功することができました。(涙)

そちらのソースを見ながらイロイロいじっていて、気がついたことがありました。
…もしかして、AlphaBlendで転送すると、転送元が表示されてない場合
(フォームの外にピクチャボックスがはみでてたりすると)
その部分は他のウィンドゥ等を転送してしまうみたいで。
(デバイスコンテキストってそういうものなんでしょうか?(凹))

F-Basic標準のBitbltのような使い方をする方法って無いものなんでしょうか…?

111上村:2004/10/23(土) 11:38
MASUKO さん>
F-BASICでAPIを用いて画像を描画する際には
リフレッシュを行うと画像が消えてしまいます
ですからリフレッシュさえかけなければ画像が表示されると思います

これはF-BASIC側の仕様でリフレッシュする際に
内部にある画像を用いて再描画するため、APIを用いて書き込んだ画像が反映されていないデータで
再描画されるためです

この問題は回避しようと考えたことがありますが
F-BASICが内部で保持しているDCを取得しなければならないと思うので
内部仕様がわからないことには回避できません

無理やり回避するにはタイトルバーのないフォームを作成し
APIのSetLayeredWindowAttributes関数で作成したフォームを半透明にすれば
一応半透明なオブジェクトが作成できます
これは重いのと思うであまりお勧めできませんが

112上村:2004/10/23(土) 11:42
MASUKO さん>
デバイスコンテキストの仕様でそうなっています
BitBltのように使用したければ
開きたい画像をAPI関数で読み込んでデバイスコンテキストを保持しておく必要があります

113MASUKO:2004/10/23(土) 12:01
上村さん、ありがとうございます。
リフレッシュは使わない方が良いのですか、なるほど。
テストしてみましたが、レフレッシュさえ使わなければ描画は反映されるみたいですね。
少しDCの理解が深まったと思います。(笑)

えと…読み込んでってことはメモリにロードしてあげるって事になるのでしょうか。
ゲームの表示のために、全画面ピクチャボックスで、描画用に用意したピクチャボックスから、常時表示用ピクチャボックスにBitbltで画像を転送する、という方法をとってます。
(描画用ピクチャボックスは不可視に設定されてます。)
その読み込みAPIを探して、もうワンステップレベルアップしてみようと思います。

114毛の生えたブリーフ:2004/10/24(日) 15:02
アプリケーションアイコンの件です。

フォームを作らずにアイコンを設定する。つまり、コンソールアプリをつくると
きに、エクスプローラ上ではアプリケーションアイコンは指定したものになるのですが、
アプリケーションを起動したときの、ウインドウ左上のシステムメニューのアイコンや
タスクバー上のアイコンがOSで用意されたデフォルトアイコンのままです。

これを変更する方法はありますか?

115ニャン子:2004/10/24(日) 21:18
F-Basic上のコンソールアプリ(風)を作成する際のフォームを作られていない
との事ですが、タイトルバーのアイコンを設定したい場合はフォームをテキスト
モードで作成し、背景を黒、文字色を白に指定しリソースをリンクする事でコン
ソールアプリ(風)のタイトルバーのアイコンを自由に変更する事が出来ます。
(多分です。実験していないので明確な事は言えません)

元々F-Basicのコンソールアプリ(風)はc:\FBASIC63\Bin\f1a0dflt.rcという
リソースを使ってコンソールアプリ(風)のアプリを実現しているだけであり、
実際にはF-Basic自体がウィンドウ上でMS−DOSの互換動作を行う為に用意
したものですから、実際にはウィンドウリソースを持ったアプリです。

仮にどうしてもリソースを作らずにアイコンのみ変更されたい場合は
「c:\FBASIC63\Bin\f1a0dflt.rc」をメモ帳またはテキストエディタで開き、

// Icon file list ===
F1A0IconList RCDATA
BEGIN
    // RCDATAITEMHEADER
    "FB", 3
    "F1a0dflt.ICO\0" <-- この部分
END

上記の「f1a0dflt.ICO\0」の部分を別のアイコン名に変更します。この場合、
最後の「\0」の部分を削除してはいけません。この「\0」はC言語表記の
NULLコードであり、リソースコンパイラが生成するf1a0dflt.resファイル
で必要になる為です。(実際にはコンパイルされたRESファイルをF-Basicラン
タイムが認識する為です)

116毛の生えたブリーフ:2004/10/25(月) 00:01
>>ニャン子氏

コンソールアプリ(風)で、やっと気づきました。確かにコマンドプロンプト
上でアプリケーションファイル名を入力すると、新たにウインドウが現れて、
今までコンソールアプリケーションと思っていたものが、実はふつうのWinアプリ
だったことに気づきました。

c:\FBASIC63\Bin\f1a0dflt.rc は雛形なようで、弄るとまた面倒ですので
最初に指示された通りにしました。きちんと目的を達成しました。

ちょっと面倒だなぁ。

117毛の生えたブリーフ:2004/10/25(月) 00:13
F-BASICの場合、ウィザードが作ったリソースファイルをテキストエディタで
ゴリゴリ改造したほうが手っ取り早い気がします。

118Fbasic使用者:2004/11/03(水) 14:14
お世話になります。
下記と同じ経験をされた事はありませんでしょうか?
BASファイルは40000ステップありまして各Windows 98,2000,XPで
BASファイルを開き下の方へスクロールしていきますと32000当たりで
スクロールが止まってしまいます。サポートへ問い合わせしたらF-BASICの
エディタは1MBまでしか使用できませんと言っていました。
(デバックは問題なくできます。)たまたま、Windows95でBASファイルを
開いてみましたら40000ステップの最後までスムーズにスクロールできました。
その違いが解りません。ご存知の方がおりましたら教えて頂けませんでしょうか。
宜しくお願い致します。

119nisii:2004/11/06(土) 10:34
WindowsXP/2000では、付属エディタで下に行くほどスクロールが遅いですね。
行番号表示をしなければ、かなりマシになります。

120 Fbasic使用者:2004/11/06(土) 17:49
投稿してくださいましてありがとうございました。
Windows95では、行番号表示でも最後までスムーズにスクロールできます。
その違いが解ればWindows98,2000,XPも行番号表示が最後までスムーズに
スクロールできるのではと思いサポートに問い合をしましたが、
はっきりした事はわかりませんでした。
FBASIC.EXEの中にエディタが入っていると言っていました。
確かに行番号表示をしなければ最後までスムーズにスクロールできました。
しばらくの間行番号表示をしないで作業に問題がないか試してみようと思っています。

121Fbasic使用者:2004/11/11(木) 01:00
日頃から大変お世話になりまして、ありがとうございます。
下記につきましてよろしくお願い致します。
IBMのPROTALKであります読み上げソフトを開始しますとダイアログボックスが表示がされます。
__________________
再生        ▲
停止        ■→□
一時停止      ‖
__________________
読み上げが開始しますと□→■になります。読み上げが終了しますと■→□になります。
■及び□のどちらかになっているか調べる事のできますAPI関数はありますでしょうか。
SPYでダイアログボックス情報を調べますとでキャプション・クラス名は
キャプション・・・クリップボード リーダー クラス名 ・・・ClipReadWC でした。
ご存知の方がおりましたら、ご指導を願えませんでしょうか。よろしくお願い致します。

122F橋:2004/11/12(金) 01:27
Fbasic使用者さん>
F-BASIC標準のエディタでは色々と問題があり別のエディタを使っている方が少なくないみたいです
フリーソフトで評判がいいエディタはTeraPadみたいっすねー
http://www.vector.co.jp/magazine/softnews/031227/n0312273.html

私的には好きじゃないけど(笑
(2ストロークキーが使えないから。それを使わない人には関係ないけど)


>IBMのPROTALK・・・
途中で検索を挫折したのですが。ヒントや参考になれば嬉しいっす

「IBM PROTALK API」でGoogleで検索すると
Microsoft Speech API準拠ってのが検索できました

「microsoft speech api サンプル」でGoogleで検索すると↓こんなのを見つけました
http://www.google.co.jp/search?q=cache:MU93g1MCuH0J:www.microsoft.com/japan/whdc/hwdev/tech/audio/default.mspx+Microsoft+Speech+API+��泣�潟�����&hl=ja&lr=lang_ja

この中でうまくキーワードを検索するとVBとかでのAPI例が見つかるかも・・・
それをうまく利用すれば(分からなければVBのサンプルソースをここで公開すれば)
F-BASICの玄人がF-BASICで使う場合のサンプルを教えて頂けるかもです

お役に立たずにすんませーん

123Fbasic使用者:2004/11/12(金) 05:20
F橋さん
日頃からF-BASIC掲示板を活用させて頂きましてありがとうございます。
この場をおかりしましてF橋さん(管理人)、皆様方に心よりお礼を申しあげます。
ヒントや参考になればと「IBM PROTALK API」を検索して下さいましてありがとうございました。
F-BASIC標準のエディタについて質問したいのですがご都合が良ければよろしくお願い致します。
プロジェクトのMAKファイルを起動後プログラムのBASを開きますとF-BASICのエディタになります。
そのエディタを別のエディタ(例えばTeraPad、MIFES)でF-BASICのエディタの代わりで直接開く事は可能なのでしょうか。
もし可能でありましたら、組み込み方法の手順を教えて頂けませんでしょうか。
お手数をお掛けしますが、よろしくお願い致します。

124Fbasic使用者:2004/11/16(火) 13:48
お世話になります。
Internet Explorerのバージョンを調べるAPI関数を探して見ましたが。
どのような関数にすれば良いのかご存知の方がいらっしゃったら教授願
いたいのですが、宜しくお願いします。

125TOKO:2004/11/16(火) 18:05
レジストリの内容を読むようです。
nisiiさんが書いておられるレジストリの読み書きの『読む』ほうを使って
ROOTKEY& = HKEY_LOCAL_MACHINE
SUBKEY$ = "Software\Microsoft\Internet Explorer"
VERNAME$ = "Version"
で、取得できます。

126Fbasic使用者:2004/11/16(火) 18:40
TOKOさん
ご返答ありがとうございました。
レジストリの読み書きの『読む』ほうを使っての情報を下さいまして
お礼を申しあげます。以前から検索で色々とAPI関数で探して見ましたが
探せませんでした。レジストリに有るとは考えもつきませんでした。
レジストリについては知識はありませんので、レジストリについて調べ
バージョンの取得に取りかかる事ができますので本当にありがとうございました。

127akira:2004/11/19(金) 20:18
F-BASICで作ったプログラムで数字を入力するとき、電卓のような入力が
できないか考えていたんですが、実現した人はいるのでしょうか?
手続き型ではできるんですがイベントドリブン型では自分の力では不可能です。
いい方法があったら教えてください!よろしく

128TOKO:2004/11/19(金) 21:14
たとえば、エディットボックスを
複数行入力:あり
テキストの配置:右揃え
などとは意図するところが違うかな?

129akira:2004/11/19(金) 23:10
TOKOさん、どうもありがとうございます。
思い込みでエディットボックスではできないと
きめつけていました。
もっと早く掲示板に書き込めばよかった。
ほんとうにありがとうございました。

130Fbasic使用者:2004/11/25(木) 12:25
お世話になります。
クリップボードの確認方法につきまして
F-BASICのプログラムにより他のテキストデータをクリップボードにコピー後
wait 時間を設けてF-BASICのテキスト画面に転送しています。
wait 時間の代わりにクリップボードにコピーが完了されたかを確認してから
テキスト画面に転送したいと思っています。
クリップボードにコピーが終了されたか確認する方法は有りますでしょうか。
ご存知の方がおりましたら、宜しくお願い致します。

131TOKO:2004/11/25(木) 14:24
「クリップボード 監視 VB」で検索・・・
が、該当するのではないかと・・思うのですが・
一部のサンプルをVBで動作の確認をしています。

132Fbasic使用者:2004/11/25(木) 14:40
TOKOさん
早速アドバイス頂きまして、ありがとうございました。
以前から検索していましたが・・。「クリップボード 監視 VB」で
検索してみましたらサンプルが閲覧できました。
お礼を申し上げます。本当にありがとうございました。

133Fbasic使用者:2004/11/26(金) 14:30
日頃からお世話になりありがとうございます。
サンプルに挑戦してみましたが力不足で解決できませんでした。
それで、今使用していますクリップボードに関するAPI関数でそれぞれで試してみました。
クリップボードのコピーが完全に終了しないと
RET = POSTMESSAGE(HWND,&H111,&HA042,0) 'コピー
if ISCLIPBOARDFORMATAVAILABLE(CF_TEXT) = 0 then
・・・・指定したデータ形式がクリップボードに存在するかどうかを判定する
(CF_TEXT) の内容が変わらない事がこちらでは確認できました。完全にコピーする
までの時間は(例:WIN98 ・・32000バイトで3秒、500000バイトで8秒)でした。
もっと長いバイトではかなりの時間がかかります。F-BASICでは文字制限数が32000
バイトですので約40000バイト越えましたら途中でクリップボードのコピーを止める
ようにする必要から今回の質問としました。ありがとうございました。

134Fbasic使用者:2004/11/29(月) 20:04
幾度にも渡り大変お世話になります。ありがとうございます。
以前から疑問の一つであります、エディタに文字を縦(上→下)に
表示する事はF-BASICでも可能なのでしょうか。
例: 
   か あ
   き い
   く う
   け え
   こ お

もし、その点につきまして、ご存知の方がおりましたら、宜しくお願いいたします。

135のぶちゃん:2004/12/01(水) 18:45
いま、FBASIC VEr4を使っていますが、98、MEでは
BASファイル、が呼びこめますが、XPでは、失敗しましと
エラーがでます。何かいい方法があるのでしょうか?
掲示板を見ていると、VER6では問題ないみたいですね!
VER4とVER6のファイルの互換性はありますか?

136TOKO:2004/12/01(水) 22:59
Ver4を探して、試してみました。
読込に失敗しますね・・
とりあえず、失敗した状態で、他のエディタで読み込んだbasをコピペし、
翻訳するとOKのようです。
sampleのBCALCでテストしました。

137TOKO:2004/12/02(木) 06:51
>>136 続・・
V4.1 L10 アップデートディスクインストールで解決しました。
別々に保管してあり#136ではCD-ROMのみのインストール状態でした。^^;)
のぶちゃん さんはアップデートした状態ですか?

138シマヅ:2004/12/03(金) 22:18
◆管理人・F橋様◆
 何度も同じ書込み(前回10月22日)をして、誠に恐縮です。
 訳あって、F-BASIC(V7)購入予定者のハンドル(シマチャン)を「シマヅ」に変更をお願いします。お手数をお掛けして大変申し訳ありませんが、宜しくお願い致します。

139Fbasic使用者:2004/12/04(土) 13:56
お世話になります。
end sub以降で下記の症状が発生します。end sub以降はどのような処理しているの
かもし、ご存知の方がおりましたら参考程度で教えて頂けませんでしょうか。
宜しくお願い致します。
症状
Win95では特にテスト_Onを起動後STOPまでは問題ありませんでしたが、end subを
実行しますと即終了するはずがメニューに設置してありますビットマップボタン
(BMPBUTTON)の部分が数秒間色抜け(白色)状態になります。その後、終了状態に
なります。
declare sub テスト_On edecl ()
sub テスト_ON()
   ・
   ・
STOP
end sub

140nisii:2004/12/04(土) 18:36
>>139
これってイベントプロシージャなのでは?

イベントを抱えた状態だと、ウィンドウのリフレッシュはできないし、
プロセス系のコマンド・APIなどに悪影響を与えるので、
通常のサブプロシージャに変えてみましょう。

イベントプロシージャでは処理コードだけ返し、メインルーチンから
その処理をするサブプロシージャを呼び出せばOKです。

141Fbasic使用者:2004/12/04(土) 19:33
nisii さん
ご返答を頂きましてありがとうございました。
殆どイベントプロシージャ使用でサブプロシージャは過去に一度だけ使用したことが
あります。問題の所をサブプロシージャにして確かめてみたいと思い取りかかる事に
しました。貴重な情報のご指導をして下さいまして本当にありがとうございました。
心よりお礼を申し上げます。

142Fbasic使用者:2004/12/08(水) 12:08
お世話になります。
受信箱中に存在するメールのメールIDを獲得しますサンプルプログラムがあります。
FBASICV63\Sample_I\READMAILを実行しますと受信トレイ.dbxの更新日時が変更されます。
仮に受信トレイ.dbxのプロパティ→属性→読み取り専用にして実行しますと、
MSGID$=""と判断されます。
MSGID$=MAILFINDNEXT( SEEDMSG$, 0 )
if MSGID$="" then exit
              ・
              ・
MAILFINDNEXTは読み取りと思っていますが、同じデータを書き換えているのでしょうか。
もしMAILFINDNEXTが読み取りでしたら属性を読み取り専用にしても書き換えない限り更新日時
が変更されないとものと思いますが、その点につきまして、ご存知の方がおりましたら、
教えて頂けませんでしょうか。宜しくお願い致します。


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板