FsPlugin: reloading current directory

Discuss and announce Total Commander plugins, addons and other useful tools here, both their usage and their development.

Moderators: white, Hacker, petermad, Stefan2

Post Reply
Loc2262
Member
Member
Posts: 124
Joined: 2005-01-26, 01:59 UTC

FsPlugin: reloading current directory

Post by *Loc2262 »

Hello all!

I have a little question:

I'm writing a filesystem plugin, and want to have it execute some internal action when the user "runs" a certain pseudo-file. No problem here with the FsExecuteFile function. But the action will change the directory that is currently being displayed.

Is there a way to have TC automatically reload the current directory to display the changes made during the FsExecuteFile call?

Thanks in advance for help!
Gruß,
Frank
User avatar
ghisler(Author)
Site Admin
Site Admin
Posts: 48021
Joined: 2003-02-04, 09:46 UTC
Location: Switzerland
Contact:

Post by *ghisler(Author) »

Is there a way to have TC automatically reload the current directory to display the changes made during the FsExecuteFile call?
The only way to do this is use PostMessage to send a message WM_USER+51 to TC with the cm_xxx command in WPARAM and LPARAM set to 0. The command to send is cm_RereadSource (see wincmd.inc for numeric value).
Author of Total Commander
https://www.ghisler.com
Loc2262
Member
Member
Posts: 124
Joined: 2005-01-26, 01:59 UTC

Post by *Loc2262 »

ghisler(Author) wrote:The only way to do this is use PostMessage to send a message WM_USER+51 to TC
Okay great, thanks!

Is there also any way to retrieve TC's window handle (besides some FindWindow API calls)? :)
Gruß,
Frank
User avatar
ghisler(Author)
Site Admin
Site Admin
Posts: 48021
Joined: 2003-02-04, 09:46 UTC
Location: Switzerland
Contact:

Post by *ghisler(Author) »

When your item is activated, you can assume that the user is using TC, so just use GetActiveWindow().
Author of Total Commander
https://www.ghisler.com
VadiMGP
Power Member
Power Member
Posts: 672
Joined: 2003-04-05, 12:11 UTC
Location: Israel

Post by *VadiMGP »

When your item is activated, you can assume that the user is using TC, so just use GetActiveWindow().
In most cases it works but there still several pitfalls.
1. If FS-plugin activated as result of command sent from script or another application (like TCMenu) TC may be in background.
2. There can be also unexpected popup window (ZoneAlarm, antivirus etc).
User avatar
ghisler(Author)
Site Admin
Site Admin
Posts: 48021
Joined: 2003-02-04, 09:46 UTC
Location: Switzerland
Contact:

Post by *ghisler(Author) »

The only problem in this case would be that there is no refresh...
Author of Total Commander
https://www.ghisler.com
VadiMGP
Power Member
Power Member
Posts: 672
Joined: 2003-04-05, 12:11 UTC
Location: Israel

Post by *VadiMGP »

The only problem in this case would be that there is no refresh...
...and message WM_USER+51 will be delivered to unpredicted window... ;)
User avatar
ctiberg
Member
Member
Posts: 194
Joined: 2003-10-24, 14:10 UTC
Location: Kristianstad, Sweden

Post by *ctiberg »

Hello!

Excuse me for butting in, but what about FS_EXEC_SYMLINK? We're using that to do the reload, passing the current directory...
Best regards,
Christian Tiberg
User avatar
ghisler(Author)
Site Admin
Site Admin
Posts: 48021
Joined: 2003-02-04, 09:46 UTC
Location: Switzerland
Contact:

Post by *ghisler(Author) »

2ctiberg
Yes, that's what I suggested too to a plugin writer, but he told me that it didn't work for him. Does it work for you?
Author of Total Commander
https://www.ghisler.com
Loc2262
Member
Member
Posts: 124
Joined: 2005-01-26, 01:59 UTC

Post by *Loc2262 »

ghisler(Author) wrote:[FS_EXEC_SYMLINK]
Yes, that's what I suggested too to a plugin writer, but he told me that it didn't work for him. Does it work for you?
Yes I indeed tried that as a first idea, but for me that did not work as well.

For my purpose, it's not that much a problem if the reload fails (it's just for an "empty project" command for a burning plugin I'm writing), but maybe it would be a good idea to implement a "controlled" means to do that for a future version of the plugin interface. :)
Gruß,
Frank
User avatar
ctiberg
Member
Member
Posts: 194
Joined: 2003-10-24, 14:10 UTC
Location: Kristianstad, Sweden

Post by *ctiberg »

ghisler(Author) wrote:2ctiberg
Yes, that's what I suggested too to a plugin writer, but he told me that it didn't work for him. Does it work for you?
Yes, without any problems at all...
Best regards,
Christian Tiberg
User avatar
Lefteous
Power Member
Power Member
Posts: 9535
Joined: 2003-02-09, 01:18 UTC
Location: Germany
Contact:

Post by *Lefteous »

2Loc2262
(it's just for an "empty project" command for a burning plugin I'm writing
What kind of burning plugin is that?
Loc2262
Member
Member
Posts: 124
Joined: 2005-01-26, 01:59 UTC

Post by *Loc2262 »

Lefteous wrote:2Loc2262
(it's just for an "empty project" command for a burning plugin I'm writing
What kind of burning plugin is that?
It's gonna be a CD/DVD burning plugin that can write Data CD/DVDs, Video DVDs and Audio CDs (for now, VCD and SVCD will follow :) ), on the usual kinds of media (CD-R/RW, DVD+-R/RW).

It'll be ready in some days, am working on the documentation ATM. :)
Gruß,
Frank
User avatar
djk
Power Member
Power Member
Posts: 1651
Joined: 2003-03-17, 11:33 UTC
Location: Poland
Contact:

Post by *djk »

2Loc2262
Sounds nice ;-)
DJK
Totally addicted to Total Commander
totalcmd.pl
en.totalcmd.pl
djorge
Senior Member
Senior Member
Posts: 422
Joined: 2003-07-03, 12:48 UTC
Location: Portugal

Post by *djorge »

Is there a way of refreshing the inactive pannel?
______________________
David Jorge
Personal License #117854
Post Reply