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

焼肉避難所2

498(・肉・) :2008/06/16(月) 22:18:33 ID:BP9i5v3Q0
魚男さんFishManありがたく使わせていただいてます。
質問なのですが複合素材の竿を使おうとすると「釣具を装備していないようです」
と表示され釣りが開始できません。
ハルシオンロッドで試した所問題なく開始できるのですが何が問題でしょうか?

499(・肉・) :2008/06/16(月) 22:20:48 ID:???0
>>497
Logger.iniとちめiniのシステムの部分どうなってるか書いてみれ

500490:2008/06/16(月) 22:45:26 ID:???0
こんな感じです。ほぼデフォ。
WindowNameだけ、windower使ってるので変えてみたんですが・・・

[Logger]
maxsize=256
;filter=6
filter=50
history=1

[System]
mode =1
polProcessIdMode =1
windowName =FINAL FANTASY XI
baseAddressMode =1
moduleName =FFXiMain.dll
offsetFF =0x56DA48
offsetChar =0x000000
offsetMhp =0x000000
keyCode0 =0x7A
keyCode1 =0x74
keyCode2 =0x75
keyCode3 =0x78
keyCode4 =0x79
weatherInfo =0x3E2A78
enfeeblingPattern =バルラーン
feedPattern =パママ

501(・肉・) :2008/06/16(月) 22:52:39 ID:???0
polProcessIdMode=3 にしてみ?

502魚男 ◆jLYGz2fqi2:2008/06/16(月) 22:55:11 ID:???0
>>498
竿名間違ってるぽいので、data/rods.xml をいじってみてください。

503(・肉・) :2008/06/16(月) 22:56:09 ID:???0
いちおうこれもやっといて

Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\FFXiPattern]
"TextCommand"="............8B8C240804000055578D84240C02000068000200005033ED518B0D........"
"DrawLog"="81EC..............578BF9897C24..80BF........0175....015F5E5D"
"DrawLogT"="884C24..884C24..518D4C24..C64424..CE518B0D........50E8........8B4424.."
"RegionInfo"="56 8B 74 24 08 57 B9 2C 00 00 00 BF .. .. .. .. F3 A5 E8 .. .. .. .. 8B 0D .. .. .. .. 6A 02 6A"

[HKEY_CURRENT_USER\Software\ffxihook_cmd]
"bin"=hex:81,ec,04,04,00,00,8b,8c,24,08,04,00,00,55,57,8d,84,24,0c,02,00,00,68,00,02,00,00,50,33,ed,51,8b
"mask"=hex:00,00,00,00,00,00,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff
[-HKEY_CURRENT_USER\Software\ffxihook_log]

504元、生の肉 ◆jLRkg3KESA:2008/06/17(火) 00:00:49 ID:???0
>>491
FFXIバージョンアップ前に動いていた登録レシピで失敗していますか?初めてお使いでしょうか?
Recipe.csvをメモ帳などで開いて0がずらりと並んでいるようでしたら、
レシピ登録ボタンを押すタイミングが間違っている可能性がありますので、もう一度確認してみてください。

タイミングの誤りに関しては、いずれメッセージを表示するよう修正してみます。

505(・肉・) :2008/06/17(火) 00:08:44 ID:BP9i5v3Q0
>>502
ありがとうございます!rods.xml覗いてみたところ
複合素材の釣竿になってました

506(・肉・) :2008/06/17(火) 11:59:18 ID:???0
合成

・ステータスバーに表示されてるアイテム数が1個多い
・合成開始ボタン押すとException発生 (TITLE指定は間違っておりません)
"プロセス{0}が見つかりませんでした"

507(・肉・) :2008/06/17(火) 12:32:36 ID:Nmo04MY60
>>506
> (TITLE指定は間違っておりません)
間違ってるだろ、常考


> "プロセス{0}が見つかりませんでした"
GetWindowProcess()が値を返してない
TITLEが間違っているから

508(・肉・) :2008/06/17(火) 12:47:45 ID:???0
間違ってないからこまってるんだよ

509(・肉・) :2008/06/17(火) 12:49:37 ID:???0
>>490
グローバルフックがバッテングしているとか

510(・肉・) :2008/06/17(火) 13:04:15 ID:Nmo04MY60
>>508
じゃあ、

#include <windows.h>
int counter = 0;
BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam)
{
if (counter++ >= 1024 ) return FALSE;
char lpString[512];
GetWindowTextA(hwnd, lpString, 511 );
if (lpString[0]>0x20) printf("%s\n",lpString);

return TRUE;
}


で、コールバック関数作って、

EnumWindows( EnumWindowsProc, 0 );

で呼んで、TITILE一覧作成してみ?

511506,508:2008/06/17(火) 13:13:50 ID:???0
Reflectorで覗いてみたけどおかしいところなかったし、
もう一度ini作って試したらできた。

どうやらメモ帳で保存したときに文字コードがUTF-8になったせいのようでした。

512(・肉・) :2008/06/17(火) 13:19:30 ID:Nmo04MY60
>>511
おいw

513506,508:2008/06/17(火) 13:26:22 ID:???0
コードみてて思ったけど、getProcess()でプロセス情報とってきてるんだし、
Interactin.AppActivete()の引数をTITLEにするよりPIDにしたほうがいいのでは。

蛇足だけど、MSDNリファレンスみたらstringを引数にできるのはVBだけぽい?
まぁ中でGetProcessByNameかましてるだけだろうけど。

514(・肉・) :2008/06/17(火) 13:57:02 ID:Nmo04MY60
ときどき、VBにだけある便利な関数ってあるわな
有名どころでは、sendkey系するときに便利な、AppActivate とか

Microsoft.VisualBasic.Interaction でC#からも呼べるの覚えておくと
何かの役にたつかも

515(・肉・) :2008/06/17(火) 19:28:46 ID:???0
>>452
GxのHPP&MPPの対応むっちゃ期待してます
&昼夜指定も・・・・!

要望要望でアレなんですが、、、
複数ジョブのマクロを作っているとiniの中身が基地外じみた事になってしまってて
整理整頓しやすくmacroだけちめiniからパス指定で別に作ったiniかtxtファイルを読み込める様にして欲しいのであります!

何卒宜しくお願いします!

516元、生の肉 ◆jLRkg3KESA:2008/06/18(水) 00:11:47 ID:???0
>>513
動いたようで良かったです。
>コードみてて思ったけど、getProcess()でプロセス情報とってきてるんだし、
>Interactin.AppActivete()の引数をTITLEにするよりPIDにしたほうがいいのでは。
機会を作って勉強してみます。どんなタイトルでも動くようになるという事でしょうか?

517(・肉・) :2008/06/18(水) 01:48:17 ID:???0
>>516
そうです。
Interaction.AppActivate() の引数にタイトルを渡しているのをPIDにしてみればいいと思います。
Reflectorで生成されたコードをみているだけなので元が違うコードだったらすみません。

518(・肉・) :2008/06/19(木) 14:25:16 ID:???0
Vu後にGxが使えなくなってしまったのですが皆さん使えてますか?

2008/06/19 12:01:47:234 FFGx INFOMATION FFGx starting
2008/06/19 12:01:47:281 FFGx INFOMATION Argment:
2008/06/19 12:01:47:296 FFGx INFOMATION spSetArgument() called.
2008/06/19 12:01:47:312 FFGx INFOMATION mode=(1)
2008/06/19 12:01:47:312 FFGx INFOMATION polProcessIdMode=(3)
2008/06/19 12:01:47:343 FFGx INFOMATION windowName=(FFXiApp)
2008/06/19 12:01:47:359 FFGx INFOMATION baseAddressMode=(0)
2008/06/19 12:01:47:375 FFGx INFOMATION moduleName=(FFXiMain.dll)
2008/06/19 12:01:47:390 FFGx INFOMATION LoadData() called. RetCode=(-1)
2008/06/19 12:01:47:406 FFGx INFOMATION FFGx shutdown

この様なログ吐いて起動した瞬間にGxが強制終了されてしまうのですが何が原因なんでしょうか、、

iniの方には下記の様に記述してあります

System]
mode=1
polProcessIdMode=3
windowName=FFXiApp
baseAddressMode=0
moduleName=FFXiMain.dll
offsetFF=0x
offsetChar=0x
offsetMhp=0x
keyCode0=0x78
keyCode1=
keyCode2=
keyCode3=
keyCode4=
jobInfo=0x3e2330
weatherInfo=0x3E2A78
enfeeblingPattern=
feedPattern=

519(・肉・) :2008/06/19(木) 14:27:09 ID:???0
コピペミスしました、
iniの行頭は[System]になってます

520(・肉・) :2008/06/19(木) 14:45:47 ID:Nmo04MY60
>>518
> windowName=FFXiApp

これあってる?実際の窓タイトルと

521518:2008/06/19(木) 14:49:05 ID:???0
改斬で同名にしてあります

522(・肉・) :2008/06/19(木) 16:37:59 ID:???0
違うPCにFFインストールしてGX起動したら
FFGx、オートメーションエラーです。
指定されたモジュールが見つかりません。
ってでました
FF起動しないで Gx立ち上げたから?
前まではFF起動しなくてもGx起動できましたよね

523(・肉・) :2008/06/19(木) 18:57:43 ID:???0
Gx使えなくなったかと思ったけど、改斬では使えるの。
Windowerでは使えなくなったぽい

524(・肉・) :2008/06/19(木) 20:48:55 ID:???0
>>522
FFGx.txt読んでから来てください。
>>523
使えないわけ:
キー割り当てがバッテングしているから
>>518
offsetFF=0x
で失敗してます。
0xを16進数として読み込むとエラーです。
未使用は、0x00としていけばよいのでは。別にバージョンアップでエラー
という訳ではないと思います。バージョンアップ前でもエラーです。

525518:2008/06/19(木) 20:56:13 ID:???0
>>524
あ、ありがとうございます!
いつ消したんだろ、

526(・肉・) :2008/06/20(金) 12:43:16 ID:dwHx7Lso0
>>516
ちょっと目的が違うかもしれませんが、FFXiMain.dll用のpid、ベースアドレス取得、メモリハンドル取得
ルーチンを書いてみました。ご参考まで。

    [DllImport("kernel32.dll")]
    private extern static IntPtr OpenProcess(uint dwDesiredAccess, bool bInheritHandle, int dwProcessId);

    static void ffOpen()
    {
      int pid = 0;
      int baseAddress = 0;
      IntPtr handle = (IntPtr)0;

      Process[] processArray = Process.GetProcessesByName("pol");
      ProcessModuleCollection moduleCollection = null;
      foreach (Process process in processArray)
      {
        if (process.MainModule.ModuleName == "pol.exe")
        {
          pid = process.Id;
          moduleCollection = process.Modules;
          break;
        }
      }
      foreach (ProcessModule module in moduleCollection)
      {
        if (module.ModuleName == "FFXiMain.dll")
        {
          baseAddress = module.BaseAddress.ToInt32();  //ベースアドレスの取得
          break;
        }
      }
      handle = OpenProcess(0x1F0FFF, false, pid);
    }

注意:スペースを全角にしてますのでこのまま貼るときはご注意。

527(・肉・) :2008/06/20(金) 14:46:13 ID:???0
>>526
まずプロセスの名前だけど「pol」や「POL」など、小文字と大文字の場合
があるようで、小文字でも大文字でも大丈夫なようにしないといけない。

ByNameでpolのプロセス取得するなら、foreachで探し直すのは無駄。
foreachでpolのプロセス見つかった所でFFXiMain.dllのベースアドレスを
探した方がシンプルかな。

.NetFrameworkでプロセス取得してるなら、handleもプロパティに入ってな
かったかな?
入ってればAPIのOpenProcessをインポートする必要は無くなる。

とりあえずパッと気付いた点を書いてみた。

528(・肉・) :2008/06/20(金) 14:51:19 ID:dwHx7Lso0
>>527
> ByNameでpolのプロセス取得するなら、foreachで探し直すのは無駄。

ByNameの戻り値は、Process[ ] 型。配列

まぁ、決め打ちで第0要素にしちまうプログラム多いが(polなどという他の
プログラムがない。謹製pol.exeは多重起動できない、という前提で)

529(・肉・) :2008/06/20(金) 19:31:47 ID:???0
泥男の新板
ttp://jbbs.livedoor.jp/computer/41213/

530(・肉・) :2008/06/21(土) 07:51:54 ID:???0
じゃあここやCASTにある泥男避難所は使う意味ないな
みんな泥男の新板に移動しようぜ

531(・肉・) :2008/06/22(日) 14:31:22 ID:???0
FFGxを使いたいんですが起動すると
An unhandled win32 exception occurred in FFGx.exe [7988].〜
という感じのエラーメッセージが出て起動しないんですが
解決策はありますか?

532(・肉・) :2008/06/22(日) 14:59:41 ID:???0
FishMan V0.4.5.0ですが
太公望を装備してスタートしても釣具装備していないと言われ釣りできません
rods.xmlの太公望の名前見ても間違ってません
何が原因でしょうか?
<?xml version="1.0" encoding="Shift_JIS"?>
<Rods>
<Rod name="バンブーロッド" />
<Rod name="カーボンロッド" />
<Rod name="恵比寿釣竿" />
<Rod name="太公望の釣竿" />
<Rod name="複合素材の釣竿" />
<Rod name="ハルシオンロッド" />
<Rod name="タルタル式釣竿" />
<Rod name="ヒューム式釣竿" />
<Rod name="ミスラ式釣竿" />
<Rod name="グラスロッド" />
<Rod name="物干し竿" />
<Rod name="一本釣りの竿" />
<Rod name="ヤナギの釣竿" />
<Rod name="イチイの釣竿" />
<Rod name="渓流竿" />
</Rods>

Windowerは3.4です。

533531:2008/06/22(日) 15:19:46 ID:???0
ググって調べて
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug\Debugger
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\DbgManagedDebugger
この2つを削除することによってエラーメッセージはでなくなったんですが、
今度は問題が発生したため、FFGx.exeを終了します。〜
のエラーがでてどうしようもなくなってしまいました。
わかる方いれば助け舟出してもらえないでしょうか(;´Д`)

534532:2008/06/22(日) 15:36:04 ID:???0
イチイの釣竿でも試しましたが装備していると認識してくれませんでした

535(・肉・) :2008/06/22(日) 17:06:29 ID:???0
餌は?

536(・肉・) :2008/06/22(日) 17:07:11 ID:???0
というかウィンドウに釣具情報は表示されてる?

537(・肉・) :2008/06/22(日) 17:26:09 ID:???0
餌もです。そもそもウィンドウに釣竿と餌の欄が真っ白です
一応、FishMan-0.4.5のフォルダはドライブ直下に置き
あとFFACE.dllとWindowerHelper.dllもばらさず同じフォルダに入れてます
keyboard_allowmmf 1もやっております。

>>332
>>メニューからインスタンス選択してみてください。
と言うのも試そうとしましたがヴァージョンが違うのか見付かりませんでした。

538(・肉・) :2008/06/22(日) 17:33:45 ID:???0
FFACEが古いだけだな、更新しろよ

539(・肉・) :2008/06/22(日) 17:54:36 ID:???0
>>538
おぉすみません、ググって更新してみたら認識しました!!
ピンポイントで原因をわかるなんてすごいです!!!
ありがとうございました!!!!

一つ気になったのですが、モンスターは釣り上げないにチェックいれてたのに
釣れましたが、これはまだ開発の実験段階でヘルプにも未実装とのことで
一応そういう項目はあるけど今後使えるようになるという意味ですか?
それとも俺だけ釣れてるだけなのでしょうか?

540539:2008/06/22(日) 18:27:20 ID:???0
539の後半は無視してください・・・
単純にチェック系にすればモンス省けました。

541(・肉・) :2008/06/22(日) 23:52:13 ID:???0
合成はじめて使わせてもらいました
ありがとうございます
バックグランドで動作
クリスタルなくなるまで永久作動
は予定してないんでしょうか

542(・肉・) :2008/06/23(月) 09:03:45 ID:???0
現在、自前でFFXiMain.dllのメモリ読みに行ってログを取得しているのですが、
取りこぼしが多かったりメンテナンスが地味に大変だったりなので
ffxihook_log.dllを使ってみたいのですが、ライブラリが見つかりません。

ffxihooksのライブラリはもう入手することはできないのでしょうか。

543(・肉・) :2008/06/23(月) 18:38:15 ID:???0
ねこまとかに同梱してんだろ。
ていうか何を言いたいかわかるけど
それすらわからないようじゃたぶん相手にされないんでやめときなw
もう少しがんばれ。

544542:2008/06/23(月) 19:36:33 ID:???0
略しすぎました。申し訳ない。
ヘッダーファイルとインポートライブラリを探しています。

それとも、もしかして元々明示的に使うものだったりするのでしょうか。

545(・肉・) :2008/06/23(月) 19:50:11 ID:udrKItl.0
>>543の思考回路
ライブラリってdllのことだよな…どこにでもあるじゃん…

>>542
ffxihooks_061029.zip <- ねこまで使われているもの
ffxihooks_070311.zip <- ファイル名でググったけど変な書き込みにしかヒットしない、初出忘れた

lib、h、サンプルソースあたりが含まれています

546(・肉・) :2008/06/23(月) 19:53:22 ID:???0
>>545
dllってなんの略かしってる?www
煽るぐらいならちゃんと面倒みて教えてやれよw

547(・肉・) :2008/06/23(月) 20:02:15 ID:udrKItl.0
>>546
まかせた

548542:2008/06/23(月) 20:32:56 ID:???0
>>545
やはり暗黙的リンクで使うものでしたか。
今もどこかに落ちてるといいのですが、さすがに古すぎますかね…。

>>546
DLLはDynamic Link Libraryの略ですが、これを使用するためには
 1) 作者から提供されている.H, .LIBファイルを用いて暗黙的にリンクする(一般的)
 2) LoadLibraryとかで明示的にリンクさせる(プラグインとかでよく使う手法。めんどい)
という方法があります。

で、ffxihook_logでググってたら作るスレ8でffxihook_log.hの内容やサンプルが書かれていたので、
暗黙的リンクで用いるものなのではないかと考え、探してもインポートライブラリが見つからないので質問しました。

DLLは確かに「ライブラリ」です。誤解を招いてしまって申し訳ありません。

549(・肉・) :2008/06/24(火) 09:23:11 ID:ZjYnMoBA0
>>548
libファイルはその昔出回ってた。使ったこともあるので記憶違いではないと思う。

ただ、今はインジェクション処理を、ねこまを初めとした各種ツールがやってくれるの
で(stableなので)それに便乗してしまって

IFFXiHooks *p = FFXiHookLog_Interface();
p->Open();
p->Get();

でログ拾えるので、誰も面倒なとこ書かなくなったという経緯。

あと、ログ拾いについては、RealTimeLogGetsとかいう車輪の再発明(失礼!)を
された方が最近いて、ソース公開されてます。こちらは、C#です

550(・肉・) :2008/06/24(火) 09:32:47 ID:ZjYnMoBA0
あーそれでもヘッダは必要か。貼ってあげよう

まず、インポート系↓

#pragma once

#ifdef FFXIHOOKS_EXPORTS
#define DLLEXPORT(type) __declspec(dllexport) type __stdcall
#else
#define DLLEXPORT(type) __declspec(dllimport) type __stdcall
#endif

DLLEXPORT(bool) FFXiHookLog_Inject(DWORD pid);
DLLEXPORT(bool) FFXiHookLog_Eject(DWORD pid);
DLLEXPORT(bool) FFXiHookLog_RegClient(LPF_CLIENTPROC client);
DLLEXPORT(void) FFXiHookLog_UnregClient(LPF_CLIENTPROC client);
DLLEXPORT(IFFXiHooks*) FFXiHookLog_Interface(void);

typedef bool (__stdcall *LPF_SERVER_LOG)(LPVOID, LPCSTR, BYTE, DWORD, DWORD);

551(・肉・) :2008/06/24(火) 09:33:53 ID:ZjYnMoBA0
IFFXiHooksクラス↓
各メソッドは名称から想像されるとおりの機能ですw

#pragma once

class IFFXiHooks
{
public:
IFFXiHooks(void) {}
virtual ~IFFXiHooks(void) {}
virtual void Destroy(void) = 0;

virtual bool Open(void) = 0;
virtual void Close(void) = 0;
virtual bool IsReady(void) = 0;

virtual bool Sync(void) = 0;
virtual bool NumOfLines(DWORD &rNumOfLines) = 0;
virtual bool NextLine(DWORD &rNextLine) = 0;
virtual bool Generation(DWORD &rGeneration) = 0;
virtual bool Header(DWORD &rNumOfLines, DWORD &rNextLine, DWORD &rGeneration) = 0;

virtual LPCSTR Get(void) = 0;
virtual LPCSTR Get(__int64 &rTime) = 0;
virtual LPCSTR Get(BYTE &rAttribute) = 0;
virtual LPCSTR Get(__int64 &rTime, BYTE &rAttribute) = 0;

virtual int Get(LPWSTR lpBuffer, int size) = 0;
virtual int Get(LPWSTR lpBuffer, int size, __int64 &rTime) = 0;
virtual int Get(LPWSTR lpBuffer, int size, BYTE &rAttribute) = 0;
virtual int Get(LPWSTR lpBuffer, int size, __int64 &rTime, BYTE &rAttribute) = 0;

virtual LPCSTR Get(size_t index) = 0;
virtual LPCSTR Get(size_t index, __int64 &rTime) = 0;
virtual LPCSTR Get(size_t index, BYTE &rAttribute) = 0;
virtual LPCSTR Get(size_t index, __int64 &rTime, BYTE &rAttribute) = 0;

virtual int Get(size_t index, LPWSTR lpBuffer, int size) = 0;
virtual int Get(size_t index, LPWSTR lpBuffer, int size, __int64 &rTime) = 0;
virtual int Get(size_t index, LPWSTR lpBuffer, int size, BYTE &rAttribute) = 0;
virtual int Get(size_t index, LPWSTR lpBuffer, int size, __int64 &rTime, BYTE &rAttribute) = 0;
};

552(・肉・) :2008/06/24(火) 13:10:39 ID:???0
>>531
完全に環境の問題ですね。
システムのランタイムがかみ合っていないとかで起こります。何かのソフト
をいれると共通で使うライブラリを強制インストールしそれがWin32APIの
アプリケーションに弊害を起こしているケースなどあります。

時間があればVC++やVB6を使ったちっこいアプリでテストするといいかもです。

ビデオドライバなど基本的なソフトの問題での弊害もありえます。

553<削除>:<削除>
<削除>

554元、生の肉 ◆jLRkg3KESA:2008/06/24(火) 17:25:22 ID:???0
>>541
バックグランド動作は技術的な事が私にはさっぱり分からないので出来ないと思います。
クリスタル、材料が無くなるまでの無制限は、合成(補助)ツールと思っているのでやらないつもりです。

555<削除>:<削除>
<削除>

556542:2008/06/24(火) 23:17:00 ID:???0
>>549
なるほど、便乗してしまえば面倒なことはしなくて済むのですね。
ヘッダファイル使わせていただきます。

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

557(・肉・) :2008/06/25(水) 01:29:37 ID:Jw3ZFdyM0
>>556
ふたつ意味があって

・面倒なアルゴリズム(実質エラー処理の塊)を自力で考えなくて済む
・ユーザにまかせれば済む動作が確立されてる

後者は、ねこまだったら、キャラ選択画面でctrl+F1押して、飛行機の
離陸音みたいのwww聞いてねこまから、当該DLLをインジェクション
する、てのがかなりの信頼性をもってユーザが実行してくれるって
こと

この「文化」を前提にせずに、あらゆる可能性を考えるのは面倒wだし
現にねこまでdllインジェクトしてるの車輪の再発明するのは無意味w

558(・肉・) :2008/06/25(水) 06:43:22 ID:???0
Exでもよくないか

559(・肉・) :2008/06/25(水) 08:54:01 ID:RnQj2Jps0
規約違反行為者への一斉対処について(6/24)
www.playonline.com/ff11/polnews/news13691.shtml

560(・肉・) :2008/06/25(水) 11:48:45 ID:???0
VB6くらいしか触ったことなくて
VB.NETの勉強がてらFFACE使って遊んでるんだけど
Cじゃなくても便乗して
>IFFXiHooks *p = FFXiHookLog_Interface();
ってできる?
(色んなのやってみたいというだけなので、FFACEでログ取れるじゃんって突っ込みはナシで)

IFFXiHooksのクラス定義を書き写すだけですらいっぱいいっぱいで
自分の書き方が悪いのか、そもそもできないのかすら判断つかないヘタレです
昨日ffxihook_cmdを使えるようにできて嬉しかったwそんなレベルw

561携帯生肉:2008/06/25(水) 12:40:09 ID:DQ4D3gA.O
526様、527様、528様
すみませんプロセス取得について教えていただいていたことに今頃気が付きました
VBが少しわかる程度なので、読み変えながら少しずつやってみようと思います

562(・肉・) :2008/06/25(水) 14:09:25 ID:???0
>>561
VB2005とかで単純にFFXiMain.dllのベースアドレス取るだけならこんな感じ。

Dim ps() As Process = Process.GetProcesses()

For Each p As Process In ps
If String.Compare(p.ProcessName, "pol", True) = 0 Then
pol = p
For i As Integer = 0 To p.Modules.Count - 1
If p.Modules.Item(i).ModuleName = "FFXiMain.dll" Then
BaseAddr = p.Modules.Item(i).BaseAddress.ToInt32
Exit For
End If
Next
Exit For
End If
Next

プロセスハンドルは「p.Handle」でプロパティに入ってる。

563(・肉・) :2008/06/25(水) 14:12:18 ID:???0
半角スペースだと消えるのか・・・

Dim ps() As Process = Process.GetProcesses()

'FFXIMain.dllのベースアドレスを取得
For Each p As Process In ps
  '大文字・小文字を区別しないで比較
  If String.Compare(p.ProcessName, "pol", True) = 0 Then
    pol = p
    For i As Integer = 0 To p.Modules.Count - 1
      If p.Modules.Item(i).ModuleName = "FFXiMain.dll" Then
        BaseAddr = p.Modules.Item(i).BaseAddress.ToInt32
        Exit For
      End If
    Next
    Exit For
  End If
Next

564(・肉・) :2008/06/25(水) 14:18:29 ID:???0
問題はFFのウィンドウをアクティブにする部分だと思う。
別にウィンドウタイトルは必要ないよね。という話。

565562:2008/06/25(水) 14:30:20 ID:???0
あ〜、コードがぐだぐだだ。
「pol = p」の部分は消し忘れです。

>>564
VBならプロセス取得してれば簡単にできる。

AppActivate(p.Id)
これだけでOK

566元、生の肉 ◆jLRkg3KESA:2008/06/25(水) 23:47:45 ID:???0
562様、564様
わざわざVBにしていただいてありがとうございます。
次の休みに試してみます。

567(・肉・) :2008/06/26(木) 22:17:58 ID:Vnn/DgLA0
>>560
何がしたいのかさっぱりわからんのだが?

1.そもそも、IFFXiHooks関係のメソッドは「素でVBから呼び出せる」って基本を
 知らないのか?

2.あるいは、1.は熟知した上で、VBへのラッパーをCかC++で自分で書きたいという
 趣旨なのか?

3.あるいは、自分が何が分かってないかすら分かってないのか(爆)

どれなんだ?

568(・肉・) :2008/06/26(木) 22:59:36 ID:R1SKtjes0
最近ポスト回しを使い始めたのですが
一回返却が終わり、ポストウィンドを閉じ
再度開くまでの時間は設定できるのですか?

できれば早くしたいのですが、iniで変更できないと
あまり詳しくない私では、どこをどうしたらいいのかさっぱりです。

569元、生の肉 ◆jLRkg3KESA:2008/06/26(木) 23:55:59 ID:???0
>>568
現在、再度開くまでの時間は設定できません。
wait0を使用する事を前提に内部で設定しています。

十分早いはずなので、開かないという事はwait0を使っていないという事ではないでしょうか?
または、再度開こうとして固まっているようでしたら、iniファイルのキー設定で、Altを指定してるとか。
こちらは不具合で、どのキーを指定してもCtrlでマクロを実行しようとしてポストが開かず無限ループしてしまいます…(さっさと直して再アップしないと…)

570560:2008/06/27(金) 03:22:26 ID:???0
>>567
スルーされてるのはイミフすぎるんだろうなと思ってたわ・・
レスもらえるだけありがたい ありがと

FFxiFunc.dllみたいに
>#ifdef FFXIFUNC_EXPORTS
>#define EXPORTFUNC(type) __declspec(dllexport) type __stdcall
(略)
>#endif
>EXPORTFUNC(bool) FnTextCommandUpdate (IFnTextCommand *intf);
>EXPORTFUNC(bool) FnTextCommandSearch (IFnTextCommand *intf, uint func_range);
こうやって外に出てるなら、VB6だろうとVB.NETだろうと呼び出せるっていうのは理解してる

FFxihook_log.dllだと
>DLLEXPORT(IFFXiHooks*) FFXiHookLog_Interface(void);
この部分、戻りをクラスとしてVB.NET側で定義しないといけないのかなと思っていて
でもこのクラスのメソッドは呼び出し側から見えない(表現まずかったらごめん)んじゃないのかなーと思ったんだ

クラス作って、FFXiHookLog_Interface()としてNEWするまでは通るんだけど
test.open()とすると、そのDLLにOpenなんてエントリポイントねえぞって怒られてしまった

Public Class Hooks
Public Declare Auto Function FFXiHookLog_Interface Lib "ffxihook_log.dll" () As Hooks.IFFXiHooks

'↓意味が分かって書いているわけではない
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Ansi)> _
Public Class IFFXiHooks

'ここのコメント部分のようにやっても同じエラー
' <DllImport("FFXihook_log.dll", _
' EntryPoint:="Open", _
' ExactSpelling:=True)> _
' Public Shared Function Open() As Integer
' End Function

Public Declare Auto Function Open Lib "ffxihook_log.dll" Alias "Open" () As Integer
End Class

EntryPoint:="Open"って書いてるんだから、怒られるのはきっと当たり前の話なんだよね
でもじゃあどうすればいいのかさっぱりわからない

こんなレベルで質問するのは恥ずかしいけど、詰まってしまったので恥を忍んで晒してみた
ちなみに、DLLについてはVB6でAPI呼んだことがある程度の理解度です。。

571(・肉・) :2008/06/27(金) 08:13:01 ID:???0
>>570
OpenとかはDLLが生成したクラス上のメソッドを呼び出しています。

とりあえず、C++で書かれたコードをVB.NETで使いたいのなら、まずC++のことについて調べてみましょう。
理解した上で使いやすいラッパクラスとか作ればたぶん神になれます。

572(・肉・) :2008/06/28(土) 06:23:21 ID:???0
>>571
どうもありがとう
概念的なことから勘違いしてるみたいだ
書いてもらったキーワードで色々調べて整理して書き込もうと思ったんだけど
ちょっと今時間取れないので、まずはお礼だけ

573(・肉・) :2008/06/28(土) 08:17:41 ID:Vnn/DgLA0
>>571
> 理解した上で使いやすいラッパクラスとか作ればたぶん神になれます。

なるかよwww このスレ常連がラッパなんて書くのに30秒とかからないw
CLR互換(C#、VB.net互換)のベタの関数(クラス化する必要もあるまい)ならほらよ↓

DWORD dwProcessId;
IFFXiHooks *lpLogIntf;

extern "C" void logOpen(void)
{
   dwProcessId = myGetProcessIdByProcessName( L"pol.exe");←ここはいろいろ流儀がある。上の方のレス議論をみよ
   bool log = FFXiHookLog_Inject(dwProcessId);
   lpLogIntf = FFXiHookLog_Interface();
   lpLogIntf->Open();
}


extern "C" wchar_t* _cdecl logGet(void) {
  static wchar_t str[320] = {0};
  wcscpy_s(str,2, L"");
  lpLogIntf->Get(str, _countof(str));
  return str;
}

extern "C" void logClose(void)
{
  lpLogIntf->Close();
  lpLogIntf->Destroy();
  FFXiHookLog_Eject(dwProcessId);
}

574(・肉・) :2008/06/28(土) 08:23:33 ID:Vnn/DgLA0
とか書くと次に、「文字列をどうやって渡すかわかりましぇーん」が来るかな?www

using namespace System;
using namespace System::Text;

// std::string → System::String^
String^ ToCLI(const std::wstring& input) {
  return gcnew String(input.data(), 0, input.size());
}

String^ myLib::Hello() {
  return ToCLI(hello());
}

void myLib::Open(void) {
  logOpen();
}

String^ myLib::Get(void) {
  return ToCLI(logGet());
}

void myLib::Close(void) {
  logClose();
}

※この ToCLI() は、ラッパ書くときの常連なので、自分用おれおれツールwに
  加えておくとよい

575(・肉・) :2008/06/28(土) 08:36:05 ID:Vnn/DgLA0
まぁ、 >>574 のHello()は冗談だ許してくれw
使用例をVBで書きたいのだが自分はVB全く知らんw C#だが同じようなもんだろ

    static void Main(string[] args)
    {
      Process[] p = Process.GetProcessesByName("pol");
      int PId = p[0].Id;
      Microsoft.VisualBasic.Interaction.AppActivate(PId);

      myLib.Open();
      String str = myLib.Get();

      while (!Regex.IsMatch(str, "BYE"))
      {
        str = myLib.Get();
        if (str.Length > 0)
        {
          str.Replace("\xef27", "[");//詰め詰め?タブ変換
          str.Replace("\xef28", "]");//タブ変換
          str.Replace("\x1e02", "(");//アイテム変換
          str.Replace("\x1e01", ")");//アイテム変換
          str.Replace("\x7f31", "");
          str.Replace("\x0007", "<br>");//改行
          str = Regex.Replace(str, "[\x1f00-\x1fff]", "");

          Console.WriteLine(str);

        }
        System.Threading.Thread.Sleep(10);
      }
      myLib.Close();
    }
  }

※みてのとおり、クラスmyLibのstatic関数にしてる。クラス化したければラッパを
 書き直せ。あまり意味があるとは思えんが・・・2垢ログを1プロセスで取るときとか
 必要か?

576(・肉・) :2008/06/28(土) 10:51:36 ID:???0
ありがとう
一応ラッパーは前に無理矢理書いたのがあるんだけど
(でも勿論ひどい出来なので参考になった)
結局ラッパー書かないと使えないって事だったの?
>>567の1.を見ると呼べることは呼べるんだよね?
DLLが返すクラスに付随するメソッドをVB.NETから直接呼べるかどうかが知りたかったんだ・・

577(・肉・) :2008/06/28(土) 11:35:54 ID:???0
>>573
さーせんwww
ああ書いておいた方がやる気が出るかなと思ったんだ。

578(・肉・) :2008/06/28(土) 12:59:27 ID:Vnn/DgLA0
>>576
トムリー本人が書いたラッパーなのか、別人が書いたのか知らないが、
VBから呼べるのと、perlから呼べるのは古くから出回っている。
VB使いならもってるやついるんじゃないか?

579(・肉・) :2008/06/28(土) 14:50:12 ID:???0
>>573はデレデレ

580576:2008/06/28(土) 16:49:29 ID:???0
perlのは持ってる。別人が書いたやつだね
俺が参考にしたのはそれ(それ自体あまりきれいな書き方ではないらしい・・)
VBから呼べるのはFuncの方しか知らないや

「素でVBから呼び出せる」って書き方だったからうおーっと思ったんだけど
じゃあそもそも>>560への回答はNOってことなのかなあ
俺の書き方が悪くて>>567に誤解させたのかもしれんね

581(・肉・) :2008/06/28(土) 17:00:32 ID:???0
>>573

IFFXiHooksのクラス構造体をどこかで書かないとOpen()などのメソッドって
呼べないですよね?
このIFFXiHooksのVBでのクラス構造体の書き方がいまいち分からない。

582(・肉・) :2008/06/29(日) 15:26:41 ID:R1SKtjes0
合成のSleep値が正しく認識されないのですが
何が原因でしょうか?

症状としましては、数回は正しくwaitするのですが
そのうちに最短のwaitで合成を開始してしまいます

583(・肉・) :2008/06/29(日) 21:13:27 ID:???0
合成 1.2.0.0にオフセ
1 = 8CD050
2 = 8D1B51
3 = 3E7548
4 = 4D4CD0
5 = 576908
6 = 53538C
7 = 576714
8 = 4D4CD8

で改竄でやってみて合成開始ボタンを押したら
算術演算の結果オーバーフローが発生しましたと出て
何もできないのですが、原因わかりますでしょうか?

ReadMe.txtを見たのですが、これは合成開始ボタンの上の
書くところにやりたい合成完成品の名前を書いて分類を決めれば
素材書かなくても勝手にやってくれる代物なんでしょうか?

584(・肉・) :2008/06/29(日) 21:18:46 ID:???0
《レシピ登録》
手動でクリスタルを選択し、材料をセットします。
レシピ登録のテキストボックスに完成品の名前を入力し、合成の分類を選択してからレシピ登録をクリックする。

585元、生の肉 ◆jLRkg3KESA:2008/06/29(日) 23:47:51 ID:???0
>>582
合成のwaitが最短になってしまう現象を見た事がないので原因が分かりません。調査してみます。
FFXIの標準機能でアイテムが整頓できるようになったので、少し機能変更したものをアップする予定です。
そちらで上記現象も解消されていればよいのですが・・・。

その後ポスト回しの再度開き問題は解決したでしょうか?

>>583
584さんの書かれた通り、先ずレシピを登録して、その後レシピを選択して合成するツールです。
想定外の操作ですぐに落ちてしまうのは、作者の技術不足と手抜き設計のためです・・・。

586(・肉・) :2008/06/30(月) 20:23:39 ID:???0
>>582
Post回しの問題は解決しないですね。
ポストウィンドウが閉じてから、大体20秒前後で
再度開く動作を繰り返します。

こちらの環境が原因ぽいので、色々試してみます。

587携帯生肉 ◆jLRkg3KESA:2008/07/02(水) 08:45:10 ID:DQ4D3gA.O
>>586
内部で固定値を設定していたつもりですが記憶違いの可能性も
明晩、こちらでも見直してみます
20秒間に「連続だからしばらく待って」のFF側のメッセージは一度も表示されないと言うことですね?

588(・肉・) :2008/07/02(水) 13:07:27 ID:FNGQCjWc0
FishManについての質問なのですが、どなたかご教授ください。
最新版のFishManで、Windower3.4で起動し、FFACEも更新してあり、 keyboard_allowmmfも1にしてあるのですが、
自動になりません。
あと何処をどのようにすれば、動くようになるのでしょうか?

589(・肉・) :2008/07/02(水) 14:47:44 ID:???0
最新版というバージョンはないと思います。

590(・肉・) :2008/07/02(水) 18:01:44 ID:???0
すみません
競売の自動落札ツールが欲しいです
破軍を価格操作してる人がいるので
常に自動落札する状態にしておいて
価格操作犯が1ギルで出品したら落札したいです
よろしくお願いします

591(・肉・) :2008/07/02(水) 19:33:51 ID:???0
しるか

592(・肉・) :2008/07/03(木) 05:31:37 ID:???0
変なサチコメかく奴なら昔あったなw

593(・肉・) :2008/07/07(月) 17:41:32 ID:Cl4BGXks0
突然で悪いが正直、アーガスなんて使い所ある?
使う=通報じゃね?人いなければ使う意味もないし
ぽp教えてくれるみたいだけど気配で十分わかるし

アーガスってこう言うときに使えば便利でばれないよって誰かあるの?

594(・肉・) :2008/07/07(月) 18:35:27 ID:D2eH0WDY0
モンスを釣るためってより、ビシージでお気にの将軍にケアルするため、って使い方だな〜w

595(・肉・) :2008/07/08(火) 00:27:09 ID:???0
>>593
捨てアカ

596(・肉・) :2008/07/08(火) 12:14:24 ID:K2h38dmM0
文字通りアーガスを釣るときに使えるぞ
ずーっとPCの前にいれるわけじゃないんだからさ
これがあれば、トイレや料理も安心してできる。

597(・肉・) :2008/07/08(火) 15:01:48 ID:zvS1dhaQ0
気配もってないので、アーガス使ってます;;


新着レスの表示


名前: E-mail(省略可)

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

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

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

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