115257
UWSC 仮 掲示板
投稿時に「証明書が不正です」と出る場合には、JavaScriptをオン
動作不具合での質問の場合には環境を表記(OS,バージョン等)
タイトルは内容を表し、内容はネットゲーム関係禁止
自身でコードを書く気の無いナマケモノは特に質問禁止
失敗作でもコードを投稿すること(具体性の無い質問は無視される可能性大)

UWSC掲示板 が復活することを祈り、それまでの繋ぎとして。
環境設定[s7777777]

Name
Subject
Color
Cookie / Pass
CSVにFPUTで計算式を埋め込みたいのですが、カンマで隣のセルに分かれてしまいます。 / sen
お世話になっております。
CSVにFPUTで計算式を埋め込みたいのですが、カンマで隣のセルに分かれてしまいます。
どうすれば良いでしょうか?
ご教授ください。

下記のようなカンマなしの計算式だとうまくいきます。
fput(オ,"=SUM(CV"+i+":CY"+i+")",i,202)



--------------
dim オリジナル梱包f = "オリジナル梱包展開_アイボリーホワイト.csv"

新_P展開数を転記(オリジナル梱包f)

PROCEDURE 新_P展開数を転記(オリジナル梱包f)
オ = fopen(オリジナル梱包f,F_READ or F_WRITE)
for i = 2 to 100
if fget(オ,i,1) = "" then break
DIM テキスト = "=IF($B"+i+"<><#DBL><#DBL>,VLOOKUP($CV$"+i+",$GP:$GQ,2,FALSE)*$B"+i+",<#DBL><#DBL>)"
fput(オ,テキスト,i,100)
next
fclose(オ)
fend

No.1750 2025/03/15(Sat) 23:48:03

Re: CSVにFPUTで計算式を埋め込みたいのですが、カンマで隣のセルに分かれてしまいます。 / sen
お世話になっております。

>0はできました。

DIM テキスト = "<#DBL>=IF($B"+i+">0,VLOOKUP(CV$1,$GP:$GQ,2,FALSE)*$B"+i+",0)<#DBL>"

空白にしようとすると、うまくいきません。
ご教授いただけましたら、ありがたいです。

× DIM テキスト = "<#DBL>=IF($B"+i+"<><#DBL><#DBL>,VLOOKUP(CV$1,$GP:$GQ,2,FALSE)*$B"+i+",<#DBL><#DBL>)<#DBL>"

No.1751 2025/03/16(Sun) 01:02:35

Re: CSVにFPUTで計算式を埋め込みたいのですが、カンマで隣のセルに分かれてしまいます。 / レフト
そもそもcsvファイルにexcelで開く事を前提にexcel用の数式を記載する時点で誤っていると思います。

・どうしてもならcsvじゃなくてtsvにする(タブ区切り)
・素直にexcelのCOMオブジェクトを使ってxlsxで利用する。
 →数式は.formulaにする

No.1752 2025/03/17(Mon) 11:34:20

Re: CSVにFPUTで計算式を埋め込みたいのですが、カンマで隣のセルに分かれてしまいます。 NEW / sen
回答ありがとうございます。

済みません。
EXCELかWINDOWSがバージョンアップした時に、XLOPENでxlsxが開けなくなりましたが、何故かCSVなら開けます。
そこで、fputでCSVにデータを転記してXLOPENでCSVを開く事をよくしています。
ただ、エクセルで開いた後、数字を変えたいなと思う事もでてきまして、このような質問になりました。

お騒がせしました。
質問の件は試行錯誤の上、INDIRECTとADDRESSを使用してなんとかうまくいきました。
私にはCOMは少し難しいので、今後もfputとCSVとXLOPENで活用していきたいと思います。
UWSCは仕事にしか使用していませんが、今はなくてはならないものとなっております。
計算式を埋め込むという荒技ですが、これで益々UWSCの活用の場が広がり大満足です。

ありがとうございました。


----------------------
DIM テキスト = "<#DBL>=IF(INDIRECT(ADDRESS("+i+","+S+"))>0,VLOOKUP(INDIRECT(ADDRESS(1,"+(100+S-2)+")),$GP:$GQ,2,FALSE)*INDIRECT(ADDRESS("+i+","+S+")),0)<#DBL>"

No.1753 2025/03/18(Tue) 22:56:06
キーボード入力中(日本語変換中)の取得方法について / みつ
お世話になります。
今年もよろしくお願いします。

キーボードが入力中(日本語変換中)かどうかを取得したいのですが、以下で上手くいきませんので修正方法または他の方法があれば教えて頂きたいです。


DEF_DLL ImmGetContext(long hwnd): long: IMM32.dll // IMEコンテキストを取得
DEF_DLL ImmGetConversionStatus(long hImc, long &dwConversion, long &dwSentence): bool: IMM32.dll // 変換状態を取得
DEF_DLL ImmReleaseContext(long hwnd, long hImc): bool: IMM32.dll // IMEコンテキストを解放
DEF_DLL GetForegroundWindow(): long: user32.DLL // アクティブウィンドウのハンドルを取得


IFB IsIMEConverting(GetForegroundWindow())
PRINT "現在、日本語変換中です。"
ELSE
PRINT "日本語変換は行われていません。"
ENDIF



FUNCTION IsIMEConverting(hwnd)
DIM hIMC, dwConversion, dwSentence
hIMC = ImmGetContext(hwnd) // 現在のウィンドウのIMEコンテキストを取得
IFB hIMC = 0
RESULT = FALSE // IMEコンテキストの取得に失敗した場合
ENDIF

// 変換状態を取得
result = ImmGetConversionStatus(hIMC, dwConversion, dwSentence)

// 変換状態のビットを確認して、変換中か確定中かを判定
// dwConversion のビットが0x0001の場合、「変換中」または「変換確定中」
IFB (dwConversion AND $0001) = $0001 // 変換中
RESULT = TRUE
ELSE
RESULT = FALSE
ENDIF

// コンテキストの解放
ImmReleaseContext(hwnd, hIMC)
FEND

No.1744 2025/01/05(Sun) 21:03:17

Re: キーボード入力中(日本語変換中)の取得方法について / stuncloud
> 以下で上手くいきませんので
なにがどのようにうまくいかないか、まで書くようにしましょう

いかにもダメそうなのはdef_dllの記述ですね
> DEF_DLL ImmGetContext(long hwnd): long: IMM32.dll // IMEコンテキストを取得

> long hwnd
のような書き方は許可されていません
DEF_DLL ImmGetContext(long): long: IMM32.dll
こう書きます
また、ImmGetConversionStatusはDWORDのポインタを受けるので
DEF_DLL ImmGetConversionStatus(long, var dword, var dword): bool: IMM32.dll
となります

ところでImmGetConversionStatusで本当に変換中かどうかを得られるのでしょうか?
> // dwConversion のビットが0x0001の場合、「変換中」または「変換確定中」
これはどのような根拠があるのでしょうか?
ImmGetConversionStatusを調べるとどう見ても変換モードの状態を取得する関数であり、変換中かどうかを調べる用途はなさそうです

そもそもなんですが、imm32はUIスレッドで使う想定のような感じで外部(UWSC)から使うのは不適切なのでは?という気がします
ので結論はちょっとこれは無理じゃね?となります

代替案は正直わかりません

No.1745 2025/01/21(Tue) 00:09:56

Re: キーボード入力中(日本語変換中)の取得方法について / みつ
stunclouddさんDEF_DLLの使い方をご教授頂きありがとうございました。

IMEで変換中を捉えたかったのですが、ImmGetConversionStatusでは駄目なのですね。
win32.dllで調べても分からなかったので ChatGPTに聞いた答えが
「dwConversion のビットが0x0001の場合、「変換中」または「変換確定中」」でした。

諦めきれないのでwin32で変換中か判断できないか引き続き調べたいのですが、
DEF_DLLの使い方を説明しているHP等ご存じでしたらご教授頂けないでしょうか。
よろしくお願いいたします。

No.1746 2025/01/25(Sat) 17:54:13

Re: キーボード入力中(日本語変換中)の取得方法について / stuncloud
やはり他のプロセスのウィンドウに対してのImmGetContextが無効であるため、imm32を使った方法は無理でしょう
(これはおそらくセキュリティ上の制限であり、むりやり突破すべきものでもない)

def_dll ImmGetContext(hwnd):dword:imm32.dll
def_dll ImmGetDefaultIMEWnd(hwnd):hwnd:imm32.dll

sckey(0, VK_WIN, VK_R)
id = getid("ファイル名を指定して実行")
hwnd = idtohnd(id)
hime = ImmGetDefaultIMEWnd(hwnd)
print hime // IMEウィンドウのhwndは取れる
himc = ImmGetContext(hime)
print himc // 0 失敗!

IMEの状態取得であればSendMessage + WM_IME_CONTROLで可能です
これは外部からImmGetConversionStatusとほぼ同じことができるということですが、あくまで入力モード等の情報が得られるだけであり入力中かどうかを判断できるものではありません


> DEF_DLLの使い方を説明しているHP等

しゅんさんのところが一番詳しいんですが、少しむずかしいか?
https://junjun777.hatenablog.com/entry/2020/06/11/130010

No.1747 2025/01/28(Tue) 14:28:38

Re: キーボード入力中(日本語変換中)の取得方法について / stuncloud
def_dllを使わずとも、UWSCらしい方法で一応解決できました (欠点あり)

変換中であることを確認するには

・変換中ウィンドウ (Composition window) が表示されている (入力中の点線が引かれている文字列部分)
・変換候補ウィンドウ (Candidate window) が表示されている (変換候補メニュー)
・かつそれらの状態をstatus等で変換中とそれ以外の状態が得られる

が満たせれば良いということになります
これらは変換中の状態でgetid(GET_FROMPOINT_OBJ)を使いidを得ることでstatus等で調べることができます

その結果
・MS IMEであればクラス名が「MSCTFIME Composition」のウィンドウ (変換中ウィンドウ) がST_VISIBLEであれば変換中である
・Google IMEであればクラス名が「GoogleJapaneseInputCandidateWindow」のウィンドウ (変換候補ウィンドウ) がST_VISIBLEであれば変換中である
と言えることがわかりました

ATOKなど他のIMEに関しても同じように調査することで変換状態の取得が可能になるかと思います

欠点はIME毎に判定関数を書く必要があり汎用性に欠けるということですね

以下は実際に試せるコードです
Windows 10で動作を確認しました

sckey(0, VK_WIN, VK_R)
id = getid("ファイル名を指定して実行")
x = status(id, ST_X)
y = status(id, ST_Y)
while status(id, ST_VISIBLE)
 if GoogleIME変換中() then
  balloon("Google IME 変換中", x, y)
  while GoogleIME変換中()
   sleep(0.1)
  wend
  balloon()
 elseif MsIME変換中() then
  balloon("MS IME 変換中", x, y)
  while MsIME変換中()
   sleep(0.1)
  wend
  balloon()
 else
  sleep(0.1)
 endif
wend

function MsIME変換中()
 result = status(getid("", "MSCTFIME Composition", 0.1), ST_VISIBLE)
fend
function GoogleIME変換中()
 result = status(getid("", "GoogleJapaneseInputCandidateWindow", 0.1), ST_VISIBLE)
fend

No.1748 2025/01/28(Tue) 15:37:15

Re: キーボード入力中(日本語変換中)の取得方法について / みつ
stunclouddさん

毎回ドンピシャのご回答および丁寧な説明をして頂きありがとうございます。
今の自分では絶対に辿り着けないコードでした。

また、DEF_DLL の HP も教えて頂きありがとうございます。
いつか理解できるよう頑張りたいと思います。

教えて頂いたコードですが MsIME変換中()とGoogleIME変換中()を試したところ、Ggoole 日本語入力ではGoogleIME変換中()が、全ての箇所でばっちり動いたのですが、
Microsoft IMEでは、MsIME変換中()がメモ帳以外の Edge や Chorme 上では認識されませんでした。

色々とクラスを変更して試してみたのですが上手く認識されませんので、もし設定等があればご教授頂けないでしょうか。
PC は Windows 10 です

よろしくお願いいたします。

No.1749 2025/01/29(Wed) 23:00:54
改行コード / seed
お世話になります。
改行コードの<#CR>をテキストやフォームに表示させるスクリプトを組むと改行されてしまいます。
<#DBL>やダブルコーテイションで囲っても改行されてしまいます。
改行されずに、以下の文を表示させる方法はないのでしょうか。

※改行したくない<#CR>改行したくない
改行したくない

No.1741 2024/11/07(Thu) 06:53:04

Re: 改行コード / ねこ
こういうことでしょうか?

print "※改行したくない<" + "#CR>改行したくない" + "<#CR>" +"改行したくない"

No.1742 2024/11/15(Fri) 14:33:46

Re: 改行コード / seed
ありがとうございます、解決しました。
No.1743 2024/11/17(Sun) 18:30:12
SENDSTRの改行 / ROM
お世話になります。
SENDSTRを用いてメモ帳にメッセージを表示しています。
Win10では<#CR>で改行していましたが、Win11では改行できなくなりました。
ご教示いただければ、幸いです。よろしくお願いします。

プログラム:
 FID=EXDEC("noepad.exe")
 SENDSTR(FID,"ABC<#CR>DEF")

⇒Win10の場合
ABC
DEF
と表示される。
⇒Win11の場合
ABCDEF
と表示される。

No.1739 2024/08/07(Wed) 21:38:18

Re: SENDSTRの改行 / stuncloud
興味深いので調べてみました

解決策は案外簡単で
sendstr(id,"ABC<#CR>DEF", 1)
のように送信するコントロールを1番目と明示するだけでした

Windows 11のメモ帳は入力部分がリッチエディットコントロールになっていて、デフォルト (0) でフォーカスされたコントロールに対しての送信だと改行の扱いが変わるのかもしれませんね

No.1740 2024/08/19(Mon) 13:09:10
MOUSEORG関数について / ben
質問失礼します。

mouseorg(id, morg_direct)
sleep(2)
print "a"
btn(left,click,x,y)

上のようにmouseorg関数の引数にmorg_directを指定しているとき、
CTRLキーを押したままにしていると3行目までは動作しますが4行目のクリックがCTRLキーを離すまで動作しません。

この問題は自分の環境だけで起こっているのでしょうか?

CTRLキーを押したままでも動作する方法がありましたら教えていただきたいです。

環境
・windows10
・UWSC ver 5.3.0.2

No.1738 2024/08/04(Sun) 18:47:10
Error: 最大FILE_OEPN数=64 を超えました / sen
いつもお世話になっております。
以前教えて頂いたfindstrを使って転記していたのですが、今回だけうまくいきません。
以前のを修正しただけなのでうまくいくはずなのですが、ファイルオープン数のエラーが発生します。
ご教授ください。


「Error: 最大FILE_OEPN数=64 を超えました 10行目: 抽出 = FOPEN("temp.csv",F_WRITE)」

データは下記のようなほぼ同一のデータで、取寄日が空白の場合は「入荷日調査.CSV」から
取寄日を転記します。


前の残_糸川.CSV
得意先名,直送先名,受注番号,担当者名,業者名,品名,組立業者名,納品日,必要日,納期,取寄日,品番,数量
松戸店,松戸店,04/02-570-01-01,高田,白方,ハコ,吉田,2024/08/31,2024/08/30,24/08/31,2024/05/06,A-2014,1
松戸店,松戸店,04/02-571-01-01,高田,白方,ハコ,吉田,2024/08/31,2024/08/30,24/08/31,,A-2014,1
松戸店,松戸店,04/02-572-01-01,高田,白方,ハコ,吉田,2024/08/31,2024/08/30,24/08/31,2024/05/06,A-2014,1

入荷日調査.CSV
得意先名,直送先名,受注番号,担当者名,業者名,品名,組立業者名,納品日,必要日,納期,取寄日,品番,数量
松戸店,松戸店,04/02-571-01-01,高田,白方,ハコ,吉田,2024/08/31,2024/08/30,24/08/31,2024/08/30,A-2014,1


dim 前の残="前の残_糸川.CSV"
dim 入荷日調査="入荷日調査.csv"

P手動で追加した取寄日を受注残に追加findstr(入荷日調査,前の残)

PROCEDURE P手動で追加した取寄日を受注残に追加findstr(入荷日調査,前の残)
dim 前の残??,入荷日調査??,取寄日
残 = fopen(前の残,F_READ or F_WRITE)
For z = 1 to fget(残,-1)
抽出 = fopen("temp.csv",f_write)
if fget(残,z,1) = "" then break
if fget(残,z,11) <> "" then continue
前の残?? = fget(残,z,3)
print 前の残??
該当する行 = doscmd("findstr " + 前の残?? +" "+ 入荷日調査)
if 該当する行 <> "" then fput(抽出,該当する行)
fclose(抽出)
抽出 = FOPEN("temp.csv")
For i = 1 to FGET(抽出, -1)
入荷日調査?? = fget(抽出,i,3)
ifb 入荷日調査?? = 前の残?? then
取寄日 = fget(抽出,i,11)
fput(残,取寄日,z,11)
break
endif
next
FCLOSE(抽出)
next
fclose(残)
FEND

No.1735 2024/07/07(Sun) 09:37:18

Re: Error: 最大FILE_OEPN数=64 を超えました / しろまさ
break直前にfclose(抽出)するだけ。
No.1736 2024/07/08(Mon) 08:19:57

Re: Error: 最大FILE_OEPN数=64 を超えました / sen
そうなんですか。
やってみます。

ありがとうございました。

No.1737 2024/07/08(Mon) 23:03:26
(No Subject) / mt
質問です。
先週まで使えていた(鳴っていた)sound関数のwavファイルが突然鳴らなくなりました。
指定しているwavファイルはメディアプレイヤーで再生されるように設定されていました。直接ファイルを叩いても同様に音楽は再生できません。
(再生されないというよりは、音が出ない感じです。ファイルは読み込んでいます)
これをGrooveミュージックから開くと再生できます。
sound関数で音を鳴らすためにはどうしたら宜しいでしょうか?

*問題が出るスクリプト*
SOUND("Windows-Notify-Email.wav",true)
msgbox("完了")

*環境*
Windows11 64bit

No.1732 2024/06/14(Fri) 11:03:47

Re: / ahqiao
OS:Windows10-64bit、下記にて確認しました。正常です。ファイル名の誤記入と思われます。
・「誤」:"Windows-Notify-Email.wav"
・「正」:"Windows Notify Email.wav" ([-]を[Space]に変更)
試してみて下さい。
尚、ファイル名を記入するときは、思い込みではなく、Exploreからコピペしましょう。

No.1733 2024/06/18(Tue) 15:23:13

Re: / mt
質問者です。
次の日使ってみたら特に何も問題なく動作しました。
お騒がせ致しましたm(_ _)m

No.1734 2024/06/19(Wed) 11:00:06
UWSCRに関する話題についてのお願い / stuncloud
作者宛ての質問や不具合報告、要望などはgithubのissueをご利用ください
https://github.com/stuncloud/UWSCR/issues

スクリプトの書き方などで有志に意見を求めるといったことであればdiscussionという掲示板のようなものもあります
https://github.com/stuncloud/UWSCR/discussions

作者からのレスポンスを求めるような内容に関してはgithubを使ってもらわないとなかなか気が付けないよ、という話であり上記を強制したいわけではもちろんありません

No.1731 2024/04/28(Sun) 19:07:21
(No Subject) / o
以下のコードで、UWSCRだと、バルーンがちらついたり、
サイズが大きかったり、重なったときにマウスカーソルが
変わったりします。UWSCと同様には出来ないでしょうか。
-----
xx = 500
yy = 500
MMV(xx,yy,40)
WHILE (xx <> 0)
xx = G_MOUSE_X
yy = G_MOUSE_Y
Balloon(xx + " : " + yy,900,100,,,,,,0)
WEND

No.1729 2024/04/25(Thu) 16:11:17

Re: / stuncloud
UWSCRに関する質問などはgithubのissueでお願いします
https://github.com/stuncloud/UWSCR/issues
ここに書かれても気付かない場合があります

マウスカーソルについては一度対策を行ったのですが、また再発しているものです
これは後日修正を試みる予定です

サイズについてはデフォルトフォントが異なるのでそれによる部分もあると思われますが、ウィンドウの作り方を完全に再現することが難しいので全く同じにはできないです
UWSCとはサイズが異なることでどのような不都合があるのかわかりませんが、フォントサイズ指定などで調整していただくほかないですね

ちらつきについては例示のコードをUWSCとUWSCRで試して差異が見られなかった(UWSCRのみ特にちらつくということがなかった)のですが、動画によるキャプチャなどがあればありがたいです

何かあれば続きはissueを立ててもらい、そちらでお願いします

No.1730 2024/04/28(Sun) 18:59:29
ビット演算で返された戻り値から各フラグを取り出したい / YMK
SLCTBOXで種別をチェックボックスにすると戻り値がビット演算で返されますが、
例えば戻り値45からフラグ1,3,4,6が立っていることを確認する方法を教えて下さい。
よろしくお願いします。

No.1727 2024/04/24(Wed) 03:30:55

Re: ビット演算で返された戻り値から各フラグを取り出したい / YMK
自己解決。
戻り値 = 45
for x = 0 to 7
 print 戻り値 and Power(2,x) //1以上ならフラグが立っている
Next
でいけました

No.1728 2024/04/24(Wed) 10:48:19

以下のフォームに記事No.と投稿時のパスワードを入力すれば
投稿後に記事の編集や削除が行えます。
200/200件 [ ページ : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ... 20 >> ]

- HOME - お知らせ(3/8) - 記事検索 - 携帯用URL - フィード - ヘルプ - メール - 環境設定 -

- Skin: Modern v2.0 - Author: ロケットBBS -

Rocket Board Type-X (Free) Rocket BBS