avatar image

Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length
  • Saturday July 20, 2024, 4:42 pm
  • Proudly celebrating 15+ years online.
  • Donate now to become a lifetime supporting member of the site and get a non-expiring license key for all of our programs.
  • donate

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Messages - worstje [ switch to compact view ]

Pages: [1] 2 3 4 5 6 ... 23next
Finished Programs / Re: DONE: Date/Time and Battery Status Bar
« on: June 03, 2021, 11:35 AM »
I dug into the bowels of my harddrive and found the release you were looking for.

Caveat: I have no clue how well it works on modern systems. It's literally been a decade since I wrote that super minimalist-tool to work well enough even on crappy laptops of that era.  :-[

The cause of the version number discrepancies is probably because many development tools makes version numbers a pain.. or at least non-trivial thing to maintain. More often than not, it is an option hidden away in some dialog, and assuming you'd want to script it, that bit of data can be stored in some part of the project that does not monitor changes as well as a common source file would. Which then makes setting up a build an annoying task of closing the development environment, running your version update script, and then restarting the application so you can build the program with the correct version number.

Ideally, you'd want to just be like 'ok, look in VERSION or some actual source file for the version definition' and never ever have any more fuss about it. But in practice, you tend to have to do a manual rodeo of configuring it every single time assuming you can't afford spending a good afternoon just setting up a configuration script and other workflow that doesn't somehow blow up your unhappy IDE in the process.

The only time it ever seems to work fine is if you use all the tools from a single developer, which means they also can do their own silly auto-versioning logic to bump version and build numbers all over the place. But in practice, very few products (especially free tools) use Microsoft products for their entire workflow.

(Caveat: Maybe modern products are better about automating version stuff from a cental location, buuuut I've never ever seen it be painless...)

DC Gamer Club / Re: The Zero Escape trilogy
« on: August 12, 2019, 02:20 PM »
Update: I played VLR (the second game in the trilogy) for about 6 hours so far. This is a mini review / retrospective with some of my thoughts in how the games differ while keeping any story elements out of it.

As of yet, VLR hasn't sucked me in quite as deeply, but I have only seen two endings anyways. Knowing how layered these games get, I don't think it should quite suck me in yet anyways. I think I know part of the reason why the second game has grabbed me a bit less, but unfortunately I can't quite find non-spoilery images to explain it, so a textual description will have to do.

The Zero Escape things have a section called the flow. This is a flow chart of the game and all your decisions in it, read from the top all the way to the bottom. It shows you story sections, escape room sections, branching paths and allows you to reply a particular section by clicking it.

In 999, the flow chart has about five decisions total. This doesn't sound much, but many of the branching decisions actually end up converging again. So, even though subsequent playthroughs take you through the same bit of game, you can mostly fastforward through them to the next decision. And more importantly: it reinforced my immersion into the game. I was able to try and explain away the different paths that would take me to different areas of the ship, and how the experiences of the other characters that I wasn't privvy to would play out based on prior experiences exploring other paths. In essence, the converging paths reinforced my understanding of the situation and what was going on at the various parts of the story. In addition, based on the flow chart you see at the start of the game, there are only 5 different endings to the story. And my first time reaching an ending probably took me around 9, maybe 10 hours: the story sections and numerous multiple escape rooms per choice really added depth.

In VLR, the flow chart appears to be a mathematical tree with no convergences. (Note that there are likely secret endings that only unlock later and as such it is possible this could change later on without me being aware of it.) The first choice you get is three choices worth, the next choice on every branch gives you two choices, and the third layer of choice gives you another two choices. So 3*2*2=12 different branching outcomes already, none of which intersect. Additionally, it only took me about 5-6 hours to get to my first ending, and so far I have only seen a single escape room per choice. At its essence, this story now feels very structured and repetitive, and while I typically love repetition, I feel that in this case it might contribute to the simultaneous feeling of shallowness and confusion as I continue to play more branches. This game is more overt than 999 about cultivating relationships of trust, and the multitude of choices and simultaneous similarity makes me feel like I won't be able to keep them apart all that easily... and I fear this is what gets in my way of wanting to be truly sucked in.

Maybe there are still some supporting features that I am not aware of in this regard, but I think I need to start keeping more manual notes while playing VLR than I did while playing 999. I love the complexity of this series.. but here it gets in the way of me actually reasoning about the story itself.

Edit: Despite this post, I am definitely enjoying VLR, and I still think it is still very much worth the money. I do really enjoy it. But with around 1/6th of the game completed, I feel it is not quite at the high level of enjoyability I had for 999. Your mileage may vary, because tastes vary. :)

DC Gamer Club / The Zero Escape trilogy
« on: August 11, 2019, 02:35 PM »
Hey all,

I had the final game of the Zero Escape trilogy on my wishlist for a while, and ended up getting the entire trilogy earlier this week because they were all 80% discounted. And strangely enough that resulted in my losing the next three days of my life on the first game in the trilogy..  :D

Suffice to say: I loved the entire experience, so I felt a need to share and recommend this series with you... even though I haven't played the last two games yet!

The concept of these games is simple and somewhat Saw-like: nine people are abducted and stuck together and have to solve puzzles in the hope of escaping their newfound prison with their lives within a set time limit. Deaths definitely happen (although not on the over-the-top level like you had in Saw) and it is typically up to you to figure out the where, how's and why's. Nothing is as it seems, everything is related (or is it?) and the epiphanies and plot twists have turned my emotions into a true rollercoaster ride at times, going from low to high to being stomped back down into the ground again.

And despite it all... it is not random. Many of the events or even plot twists in the first game I was able to predict or reason out beforehand to some degree, making it a very satisfying game to really sink into as opposed to just skim. It does not make it a bad game, but rather a very well-written game with many layers of intrigue that take the right nudges and exploration to finally understand.

Note that these are games in the 'visual novel' style, so don't think of these games as being about any sort of real-time 'gameplay'.  Think about them as having a really deep, multi-layered reading experience with branching paths and escape room puzzles mixed in, all of which leads to an ever-deepening mystery that is meant to suck you in really deep. :)

There are three games in this trilogy:

  • Nine Hours, Nine Persons, Nine Doors
  • Zero Escape: Virtue's Last Reward
  • Zero Time Dilemma

You can get the entire trilogy here, currently at an 80% discount (the lowest it has ever been!): Zero Escape Trilogy Bundle (Steam)

Wondering why there is only two games in the bundle? When the game was released on PC, the first two games were bundled into a package called 'The Nonary Games'. So it is in fact a trilogy.

This is a trailer for the first two games:

This is a trailer for the last game:

If you end up getting them, let me know how you enjoy the games. I loved 999 and will soon play the next two games! :)

I can't be bothered going down the rabbit hole, but there's two Windows APIs that come to mind. You'd need some tool that can actually create such API calls though because this is a bit lower-level than a batch file.

Option 1): SHChangeNotify() function. I am not sure if this will work when you change the setting to display hidden files since this API seems to be oriented more towards changes in the actual items displayed rather than the settings of Explorer, but the only way to find out is to test it. The SHCNE_ALLEVENTS flag is probably the safest bet, but it might cause it to refresh too much, so if that works, you'll probably want to narrow down exactly what changes.

Option 2) Broadcast a WM_SETTINGCHANGE message. This StackOverflow question shows an example on how to do this. However, this seems to be more geared towards generic system settings and not towards what Explorer is configured as. Still, it is worth a shot.

There might be more APIs that I am not aware of, but these two came to mind. I can't quite help you beyond this pointer, though.

Cautomaton author here, summoned from the grave and beyond! 8)

I have re-read this thread a few times, and I am still a bit confused as to what MourningStar wants to achieve exactly. I think I understand, but for the sake of clarity, I will restate what I think the question is so that I can then give a proper answer, if only to avoid confusion later.

MourningStar wants to use Windows Explorer, select music files, and with a single key press choose a particular action in the context menu (also known as popup menu) that would appear if one right-clicked these files.

If I am wrong on any of this, please clarify this clearly.

Tackling the issue DIY-Coding-Snack-Style

This problem consists roughly out of two or even three parts.

1) Something needs to detect the key press, likely a global hotkey. There are tools for this. This is the starting point for where the 'logic' begins.

2) Something needs to figure out which Explorer window is on top and determine the files selected therein.

3) Something needs to simulate selecting the correct item in the sub menu.

My little tool Cautomaton only tries to tackle the third option. It is a tool meant to automate a very specific purpose, and as such does not have the functionality of points 1) and 2).

Items 1) and 2) might be the same program, or they could be separated into two. I am sure though that others can in fact point you towards a relevant tool for this. If no easy, existing tools exist for this, and knowing how talented some people in these forums are, someone could likely script these parts together using something like AutoHotkey. But I think one of the many tools released on DoCo might already supply this functionality. (mouser, I am looking at you and all your automation robots here! :P ) But I might be mistaken given how little time I have spent here as of late. :)

Since Cautomaton can at least cover part of the problem, I'm going to dive into it to show what it may do for you on this occasion.

Cautomaton basics

Windows file associations and the context menus that result from them are frankly a messy monstrosity built up throughout ~25 years of Windows development. For novice and expert users alike, it is very difficult to understand why some menu items appear when they do, and why they appear in the positions they do. Even today, I am frequently stymied by the behaviours I observe, and there this is why I have built an analysis function into Cautomaton that hopefully makes finding the correct magic incantation as painless as possible.

Because I had to dig up my Windows 7 VM (30 minutes of forced updates...) and then put Cautomaton on it, I figured all the time might as well be worth it and I went and created a couple of screenshots for educational purposes. These are the files I'll be talking about.


Note that I collected a couple of different file formats: one mp3, one wma, one flac. To Windows, these are all different, and especially once you start dealing with selections of multiple files, you can potentially run into problems where Windows decides to hide entries because it believes a menu item does not apply. You'll note that my FLAC song is not supported by Windows / WMP. I'll primarily focus on the mp3 file in this post, but this serves mainly as a reminder that multiple selections can be very gnarly territory.

You'll see that I put both the 32-bit and 64-bit version in there. Why? Because both versions will very likely show you rather different menus! If your machine and Windows are anywhere close to recent, the 64-bit version should suffice for all your needs... but some programs may simply not show up on one or the other popup menu. Myriads of reasons aside: it is important to be aware of which version you are using if you end up having problems not seeing menu items you should be seeing. My examples will use the 32-bit version of Cautomaton, although you should probably use the 64-bit version because 32-bit is positively ancient. (I made my screenshots before I typed all this, and never gave it much thought. Do as I say, not as I do.... :Thmbsup: )

From here on, everything happens in the command window (cmd.exe).


Here I run Cautomaton with the following switches:
  • /P - this option tells Cautomaton to show a context (popup) menu for human interaction
  • /A - this option tells Cautomaton to run in analysis mode
  • /N - this option tells Cautomaton to not actually execute the chosen action (it is late for me right now and I don't want to risk waking up the neighbors!)
  • my mp3 music file

You can see that I am about to click the 'Add to Windows Media Player' list, because I assume that is the one the OP wants.


Analyzing an action will output three pieces of information: information related to the 'verb', information related to the 'trail', and finally the recommended means of reproducing the given action.

Verb related information:

Verb (Unicode): Enqueue
Help text (Unicode): Add to Windows Media Player list

Verbs are the ideal means of interaction as this is a language-neutral concept that is native to Windows itself. They practically exist for the purpose of automation and if present, is always what you will be recommended to use. Verbs are supposed to be the same regardless of you using an English, Dutch, Chinese or Japanese system.

Unfortunately enough, far too many menu options do not offer verbs due to oversights, plain laziness or even because they want to prevent automation. Which is where trails come in.

Trail information:

Caption: &Add to Windows Media Player list
ID: #117
Position: 2
Neg. Position: -20

Trails are a Cautomaton concept based on the idea of having a breadcrumb trail to retrace ones steps. Unfortunately, context menus themselves are not meant for automated interaction, and are very much subject to change depending on the selected files. Some entries change name depending on the file selected. Others can only be pinned down because they like to snuggle in as the fifth item from the bottom. Yet others may be very stubborn about an internal ID.... anyhow, you probably get my point: this is macgyver-esque 'it works for me' and 'do not wake up sleeping bears' territory.

Recommended Cautomaton parameters: /v Enqueue

And finally the recommendation. Thank the gods: it is a verb!

In this case, if we want to reproduce right-clicking the mp3 and choosing this action, the program suggests running:

cautomaton32.exe /v Enqueue "01 - Over Distant Shores.mp3"

And while screenshots can't quite do the music justice ;), I can confirm this works perfectly on my end. (After waking up the neighbors, goddangit!)

Multiple files?

cautomaton32.exe /v Enqueue "01 - Over Distant Shores.mp3" "02 - Chrono Trigger.wma"

Also works! (I could make a screenshot of WMP having those two in a playlist... but you get the gist of it by now I think.)

Adding the FLAC file... Unfortunately, WMP rejects that one with its entire being: it does not show up. However, the other two do, which suggests that on this occasion at least the menu item didn't disappear outright just because an incompatible file was selected.

So what now?

This depends entirely on the program(s) used to cover points 1) and 2). I can't help you with that, I am afraid...

... but...!

Tackling the issue Common-Sense-style

This is where I tell you not to use my program. Cautomaton is a tool that exists to unlock tricky doors that otherwise stay locked, but it isn't always the right tool for the job. And this is exactly one of those situations where the K.I.S.S. principle (Keep It Simple, Stupid!) rules supreme.

Let's be honest: all you want is to hit a key and have something happen. This is not so much about dependable automation that should happen behind the scenes as part of a bigger whole. If something doesn't work, you'll be right there to figure out WTF is going on.

Looking back at the trail information above, you can see that the caption is '&Add to Windows Media Player list'. The ampersand is used to denote a hotkey. Unfortunately, around the Windows XP era the default behaviour became to hide all those 'confusing keyboard shortcuts' by default to make things look nice and only have them show up when you press alt... but with popup menus that also close quite easily when keys are being pressed most people aren't even aware these shortcuts exist anymore!

Combined with the tip someone else already gave up above in regards to popping up the context menu using the Context key on the right side of your keyboard, we have minimized the solution to two actions key presses: CONTEXT, A.

And with that in mind, we suddenly have another way we can automate your problem: by finding an application that can assign a single keypress to execute two keypresses. Such basic macro tools are a dime-a-dozen, and although I do not personally use any, someone here should be able to give you a recommendation for a good one.

Note that this solution is by far preferable: Windows Explorer will do all the heavy-lifting exactly as it is supposed to do and far less complexity is involved.

Just because I wrote a tool that can solve a part of the problem does not mean the tool is the right tool to solve the problem. ;) Good luck!

N.A.N.Y. 2019 / NANY 2019 - FFFilterGUI
« on: December 31, 2018, 07:42 PM »
NANY 2019 Entry Information

Application Name FFFilterGUI
Version v0.1 codenamed ItMetMyNeedsSoWhoNeedsPolish (2019-01-01)
Short Description Make bulk file operations with ffMpeg complex filters a bit more reusable.
Supported OSes Windows XP+ (probably)
Web Page None. You are reading it.
Download Link See the bottom of this post.
System Requirements
  • Windows XP+ (probably)
  • a folder with the ffmpeg.exe binary in it
Version History
  • v0.1 codenamed ItMetMyNeedsSoWhoNeedsPolish (2019-01-01)
Author I'm already posting under my own name, do I need to draw even more attention to myself? PleaseSayNo.

First of all, a super-duper-uber warning: this is pre-alpha and it might just kill you or your computer merely by reading this post.

And I am not liable for any of it.  8)

More seriously, I want to apologize for the very minimal nature and the fact it only barely gets done what I needed it to do. As the application design may betray, I had intended to put in a lot more polish to make it more usable for others, but that didn't really happen... and because I felt bad about not releasing an application for NANY for the last couple of years, I decided to just release it as it is.

This does not mean I am not interested in updating it if there's people with feature requests or bugs that were noted, but because it met my own needs, the pressure kind of disappeared.

So what does it do?! you might ask. Well then.

Roughly put, it aims to make it FFmpeg (complex) filters manageable by GUI.

I had a few reasons for this.

  • FFmpeg is a super-flexible tool, but most GUIs only expose a fraction. FFFilterGUI doesn't even expose a fraction.. but it aims at things I couldn't find in other tools based a few simple search queries... which then led me down the dark path of more-or-less learning how ffMPEG worked in those regards.
  • FFmpeg is does not have Windows as its primary audience. It works, but at the same time, it does not work as easily on the commandline.
  • My usecase involved a huge amount of input files that vary a lot. (Specifically the concatenation of an unknown amount of files.) Between the maximum path lengths and the ungodly amount of configuration options, I did not enjoy knowing I could be skirting against the limitations of the command line whenever I needed to do stuff. I needed the physical limits of the commandline to no longer be any of my worries.
  • The syntax for concatenation filters is awkward; it involves connecting different streams together and numbering the total amount of entries fed to the application... all information that I had but in practice had to manually adjust whenever I wanted to deal with a batch of videos. I wanted to automate that away.

So basically I had already worked out how I needed to run FFmpeg, but the practicalities made it a pain in the ass and a task I always kept postponing because it was so damn finnicky and prone to error.

  • The basics of a configurable template system to 'remember' FFmpeg workflows.
  • A basic templating system using DotLiquid to customize the creation of complex filters.
  • Breaking through the limitations of the FFmpeg command line caused by having excessive amounts of input files. (This is achieved by having the filter graph load them instead.)
  • Drag & drop of your input files.
  • The capacity to filter out duplicate input files.
  • The ability to automatically sort your input files by name.
  • Utterly untested beyond the default template which matches what I needed to get done...

(If nothing else, at least the default template will let you concatenate endless amounts of video files together without a problem...)

Planned Features
I have absolutely no plans except to try and cater to possible feature requests if they pop up... which I doubt because I don't think many people have a need for the very specific flexibility I did.


Extract the files in the archive to a folder and run it.
Settings and stored templates will be stored in the same folder.
And temporary files used during the encoding process will never leave your temporary directory.

Using the Application
To use the application, you first need to put the path containing the ffmpeg binaries in the box designated for it.
The automatically created 'Default' template is configured to concatenate all the files you put in the bottom list into a singular whole using the FFmpeg concatenation filter.
Just drag & drop a couple of video files in the bottom list.
Then click the \[Encode...\] button, and choose the name you wish to save the resulting file as.
At this point, FFmpeg should kick into action according to the configuration specified by the selected template.

Assuming you've unzipped the files to their own folder, you can just delete that folder.
If you for some reason put it in a place with a bunch of other files... you'll want to delete the original files (FFFilterGUI.exe and DotLiquid.dll) as well as settings.xml and any templates, which are files that have the .fffilter extension. Default.fffilter is the most likely suspect.

Don't. Just.... don't. It is a new year, spring will be here soon, and trying this application is not worth the potential loss of life.

Known Issues
It is utterly and completely unpolished. I had wanted to do way more with it, but it didn't happen because time is limited and my own needs were met. It does the bare basics, but that is about it.

N.A.N.Y. 2017 / Re: NANY 2017: BackseatSiege (QuorraBot plugin)
« on: December 23, 2017, 09:02 AM »
It's been a while. I updated this plugin a while ago but I think I forgot to upload it here despite intending to do so. Whoops.

Oh well, yet another DLC came out, so yet more updates from me. Do with it as you will. :-)

Regardless of the amount of 'accessibility features' that recent versions of operating systems contain, I often feel that it's only gotten harder to make an old-fashioned, accessible app. Inbetween all the Aero stuff, the ways windows are made 'non-standard' and the way webpages are a graphical free-for-all, it seems as if consistency and user-preference have been put into banishment.

And Microsoft is not helping. Older customizability settings get plain ignored or overridden by new things. New toolkits are more focused on the looks than on accessibility, too. At this point, I can't exactly call WPF new anymore, but I've complained often enough about the ways it reinvents the wheel for existing controls. (My number one pet-peeve that tends to break with these sorts of shenanigans is that the mousewheel almost never works consistently anymore in modern Windows in regards to how much it scrolls...)

Making programs accessible is (imho) harder than ever nowadays. Everything is custom and skinned and the noticeable limiting of visual tweaking on the OS level is pretty much screwing people with minor visual handicaps over. And it makes me sad. /rant

I should probably have checked those places. Since I ended up using some Steam wallet leftovers I never even considered it though, but that's definitely something people ought to consider!

Weird that American Nightmare seems to be getting different treatment on Steam than it is on GOG. Oh well, it doesn't really matter in the end. Enterprising souls will find a purchase option that suits them. :)

The Announcement:

If you have not yet played Time Magazine’s 2010 Game of the Year, now is your final chance. Remedy’s Alan Wake is going offline from stores. This is due to the expiration of music license agreements for the game. Alan Wake’s American Nightmare is not affected.

For 48 hours, you can buy Alan Wake including DLCs and Alan Wake’s American Nightmare at a 90% discount on Steam.

If you already own Alan Wake – like the majority of the gaming population out there – you have nothing to worry about. The game will stay in your library and continue to work for you.

The Store Page

Worth noting is that the similarly-discounted Alan Wake Franchise Package also includes Alan Wake's American Nightmare, which is not discounted at all were you to buy it separately. This is probably an oversight, but I mention it just in case you only intended to buy one or the other.. :)

Mouser's Zone / Re: Bug report: automatic screenshotter stops
« on: May 03, 2017, 02:37 PM »
Yeah, I think 10k is the limit in recent versions of Windows per application. Back in the 9x days, I think the limit was 1024 or something, so go figure. Since they are per-session identifiers and very archaic beasts that date back to the Windows 3.1 era, there's only 16 bits (~=65535) of them total for your entire login session. So six programs that all try to max out the GDI handles will without a doubt give you this crazy madness. (Look into the testlimit tool from Sysinternals, it can do exactly this. :D)

Honestly, it is already highly extravagant to have 500 GDI handles in a single process imho, because you can (roughly) equate it with using 500 pencils at the same time. To stick with the comparison: it makes sense not to always put the pencil you are using back into the pack because you know you'll need it again in a moment... but in this case, the program keeps taking pencils out of the pack and dropping them on the desk for re-use.. which never happens. And then suddenly, there's more pencils than desk, and no more work can get done... which is why pretty much anything involving traditional graphics tends to die the moment you run out of GDI handles: windows don't get drawn, menus fail to draw properly, random stuff has black or white squares or whatever..

TL;DR: GDI handle excesses are probably my favorite kind of 'traditional' bug because as much of a pain as it can be to find the source of the leakage, the utter chaos is such a nice change of pace.

Mouser's Zone / Re: Bug report: automatic screenshotter stops
« on: May 03, 2017, 02:07 AM »
Another thing I would recommend is to open up Process Explorer and check the properties for the process. In particular, the statistics about the handles (on the performance tab) are where I think you might find a problem; if you run out of handles due to a bug not freeing them up after use you can get some really weird behaviour.

My guess is that the app might be leaking a GDI handle each time it screenshots, but that's just a guess.

You don't even need to wait for an error to occur to test this theory; just look at the numbers when you start it up, leave the app running for a few hours, and then check the numbers again. If any handle has grown considerably (don't forget to account for some minor variance), then that is likely to give mouser a hint as to where he's looking for the problem.

Eh, this one was pretty simple. Didn't have to fuss much with it, but that's because I did some other batch files in the past month which were absolute nightmares. (I really need to learn PS at some point, but it's so much easier to just work with something I 'get' rather than get lost in an ecosystem and syntax where I'm not even sure how to do something trivial, nevermind combine the complicated stuff I want done!)

Compared to programs borking over unicode characters, delayed variable expansion in batch files and more of such silliness, this was pretty easy. Most of my mind went into the 'ok, I've got A inside A, how do I fix this in a generic way that is fool-proof and does not involve copying files, especially not across drive boundaries' dilemma...

ZIP files come in two varieties, oddly mirroring the users which create them...

The first variety has the files directly in the root of the zip files. These are created by users who select multiple files and create an archive out of them.

The second variety has the files stuck inside a directory that is in the root of the archive. This was accomplished by selecting a single directory and then creating an archive out of that.

(OK, there's far more varieties, but they are just worse and arguably insane variations of the second variety...)

When you extract the first kind, you'll want to extract it to a subdirectory, usually using an option like 'Extract to MyZipFile\'. Otherwise, you get the crap stuck in the middle of all your other files, which is really annoying!

When you extract the second kind, you want to extract it to the same directory, because otherwise you've got a wonderful beginning with matroshka dolls: a single directory inside a directory. It's just annoying.

And unless you peek inside a zip (as opposed to rightclicking and just extracting like I tend to do) there's no other option but to guess... and since the least damaging option is to extract into a new directory, you will thus end up with the worst-case scenario of the second variety.

So what is this little script about?!

Basically, I had to extract about a thousand zip files... and they were a mix of both varieties. Fixing the nested directories manually... yeah. I wasn't going to put myself through that pain. So instead I wrote a pair of batch files.

It's just a simple script, but since I happened to need to do a lot of it, I figured I'd automate it and then share it with all of you.

Squash-All: Squashes all subdirectories of the current directory.
Squash-Directory: Squashes a given directory.

There's no real special features save for the fact it avoids conflicts where you have a folder 'test' inside a folder 'test' which could cause issues whilst moving the files up a level. Other than that, it's just a batch file.

Have fun? :-)

N.A.N.Y. 2017 / Re: NANY 2017 post your mug photos here
« on: January 25, 2017, 11:07 AM »
Perfect for brewing some trouble with. :Thmbsup:


N.A.N.Y. 2017 / NANY 2017: BackseatSiege (QuorraBot plugin)
« on: January 01, 2017, 11:40 AM »
I contacted mouser on Dec 31st about releasing a plugin I created for my own use to the greater community... because hey, I haven't participated in NANY in a while for lots of reasons, and I felt bad. As such, I figured I'd release a script I made for my own use in the hope even one person will somehow find a use for it.

Backseat Siege was created by me in order to involve my (admittedly very limited) viewers and give them a say in what operators i play as whilst playing Rainbow Six: Siege. For those not familiar with the game: it is a squad-vs-squad (anti-)terrorist FPS where every operator has a special ability and distinct playstyle. There are two sides: attackers and defenders, or ATK & DEF as I tend to refer to the two factions.

My requirements for this plugin were as follows:

1. No votes should be ignored; eventually every operators wll get played.

2. Streaming means there is a stream delay. This means people should be able to get their votes in at any time as opposed to a very specific time window.

3. Streaming is stressful. Allow.moderators to help out in case I forget something.

4. Viewers like emotes and love expressing themselves. So make sure their commands have flexibility to them.

5. Due to the design of the game, only half the operators is available every round. This means I can essentially have two voting pools: one for attackers (ATK) and one for defenders (DEF).

6. I don't like my stream to be cluttered; simplicity is important. As such, I want the current top-voted operators to be on screen. In case of a tie, I want them to cycle through the tied ones.

7. As a streamer, I want a simple dashboard with the complete rankings including vote counts to give a bit of auditory commentary. (Example: the number two in votes is only 5 votes away! Keep voting!).... not that it ends up mattering with my small viewercounts...

So what features does this mean I have beyond the obvious stuff already written out?

1. Broadcast software agnostic. OBS, xsplit, whatever... it should work.

2. Decently commented source code; disabling an operator because you dont have it (damn unlocks) or adding new ones is pretty simple. All configuration is clumped up near the top of the file.

3. Sometimes you just want to mess with your viewers, so there is also a facility to fudge around with the democratic process, bahaha. :) (People can see it in chat of course, so don't think that you can hide it...)

4. Should be easy to translate since pretty much all output strings are clumped together.

I am kind of lazy and not including screenshots right now (because eh, it is a bot and those installation instructions took forever) and if you want to see it in action, you can always check it out when I am streaming the game in question.

Perhaps tomorrow (Jan 3rd?) I'll find it in me to properly spruce up this post some more; I'm just glad to have the release out at this point.

DC Gamer Club / Re: Keep Talking and Nobody Explodes!
« on: October 30, 2015, 09:47 AM »
I wouldn't be surprised if that scene inspired the game, or vice versa. (I don't watch Archer.)

Multiple things from that clip give me a very strong deja vu feeling...

DC Gamer Club / Re: Keep Talking and Nobody Explodes!
« on: October 30, 2015, 09:30 AM »
Slave driver. :) Check out this playlist.

DC Gamer Club / Re: Keep Talking and Nobody Explodes!
« on: October 30, 2015, 09:25 AM »
I've uploaded plenty of those videos myself, seeing how I ended up streaming this game on twitch. :)

DC Gamer Club / Keep Talking and Nobody Explodes!
« on: October 30, 2015, 09:19 AM »
Disclaimer: mouser is currently bugging me in chat to post something here and bring this game to everyone attention, and since I am the ever-benevolent me, I decided to go along with it. (That, and it is a very damn good game!) :-*

Link to game website
Link to Steam Store page

To be precise, mouser was linking me to a certain review, but personally I'd like to talk all of you into not looking at it. Instead, I'm going to describe the game in as basic a way as possible; to do anything more would simply ruin the curve where you first meet the game, then explore its intricacies and finally smash your face into the wall trying to find the right way to tackle that particular bomb.... ah fine, I digress.

This game can generally be put into the 'party game' genre: you are supposed to play it with multiple people. These people can be in the same room, although I've personally played it with other people through skype, teamspeak and/or mumble.

At that, it is an asymmetric game that only requires one person to actually own the game; this person is the one who will be interacting with the bomb, the so-called defuser. There's bonus fun to be had if there's an Oculus involved, but it plays completely fine with the mouse or gamepad. They describe the bomb, decide which modules (which are basically mini-games that have no relation to eachother) need to be tackled, and then spend all their time followin the instructions of the experts in order to not die. Easy peasy!

All other players are the so-called experts, and all they have to go on is a bomb manual as well as a pen and some paper which they will need in order to write down notes. There can be one experts, there can be five; some bombs can actually be more difficult with more people, whereas others are simply too difficult with too few people. During the game, the defuser will describe things on the bombs, and the experts will use this information to as quickly as possible figure out the instructions that the defuser needs to follow in order to disarm the bomb. This is not as easy as it sounds: many of the instructions are confusing as hell, and the nature of some games preys on misunderstandings and other communication mishaps!

This game has a very good tutorial. Actually, it does not amount to much in a practical sense, but the levels themselves gradually increase the difficulty, both by introducing you to new modules step-by-step, but also by removing the room for error as well as lowering the time limit. You essentially teach yourself how to play the game! And because the game could end up too easy (hah), the game also throws some curve balls for the defuser to work with as the difficulty increases. Think of environmental distractions as well as special bomb modules that exist for no reason other than to increase the pressure on the defuser even more.

As a whole, everyone I know really enjoys playing this game. Sure, all the experts have is a manual and pen and paper, but the fact they do not know the bigger picture and are always low on time without being able to see the clock is what gets their adrenaline pumping something fierce. As for the defuser.. suffice to say that this game (ab)uses plenty of auditory cues in ways that even an suspenseful action movie would have trouble contending with.

I can wholeheartedly recommend it to anyone. There will definitely be some fighting and laughter as a result of people screwing up, but that is a part of the game... although the finish line and 10 seconds left on the clock can make a final trivial mistake really hard to swallow!

(P.S.: I obviously own the game. If people want to experience it as an expert, I'll gladly play with them!)

Well, it isn't meant to be that way. It just grew that way. With enough effort, anything ought to be possible. But that is imho something that requires a lot of time, effort and... money. (I think a commercial company would be the only one with enough staying powe to make it actually convenient to use and easy to understand...)

I understand what you mean, but my point is that it is not as reliable as you think it is.

For one, context menu handlers do tons of disgusting shit they should not do when adding menu items, so the order in which stuff appears has zero bearing on where you see it in the list.

Second, context menu handlers have a habit of fucking around the moment stuff gets actually displayed / drawn, which only gives them more ability to screw with the ordering and presence of menu items. (Probably ought to fall under point 1.)

Third, the order in which Windows executes the context handlers is unknown / unspecified, which will affect the stuff in the first few items only more. A bug in a single context menu handler can affect others, and errors can cascade with the most confusing shit to debug for a programmer. (You and your target audience may well be smarter than me, but I've found it a good practice to always idiot-proof stuff as much as possible. This stuff alone makes me anticipate a lot of bug reports that are nor ever were mine to fix.)

From the points made upto here, it follows that even a minimal, perfect implementation of your two shell extensions could actually affect the ordering/display of menu items. (For example, assume that a shell extension moves all of its items into a submenu whenever there's more than 20 items displayed. Shenanigans would happen if you bump it over that magical number!)

Fourth... temporarily dumping stuff in the registry, running a test and then unregistering it is prone to error. Your program might crash and your users might be stuck with the things. Maybe you remove it in an improper fashion. It might somehow interfere with other programs on their computer, or those programs might interfere with you. All of it comes down to you trying to solve a local problem with a global solution, and that shit is poison.

In the end, keep in mind that whatever you do, when you deal with context menus you are dealing with shell extensions, and it wouldn't be surprising if there's a dozen shoddily coded context menus that interfere with eachother that you do not have the source code for to inspect. You do not really have the code Windows uses to build  the context menus either. All you have is an understanding of the API, but you do not have an understanding of the way either side violates the API! (Programmers are idiots, and Windows breaks stuff in a gentle way to try and guard against it. It's madness!)

When you know so damn little, how useful are your print debugging statements really? While I haven't taken your exact path of print debugging, but I did do a lot of print debugging whilst doing Cautomaton, and the results made sense as often as they defied it. :(

I feel the need to say this (again): I do not want to discourage you nor shit on your request. But I know first-hand that context menus are a nightmare that fall apart based on implicit assumptions. This stuff amounts to 20 years worth of hackery and abuse, and for all the simplicity it ought to be, it has turned into a terrific frankenstein of gotchas. Nothing is as it seems to be, and you do not know what you think you know.


Have fun?  8)

This topic just now caught my eye by sheer chance. As someone who has gone into very nasty territory with regards to properly recreating context menus in as authentic a manner as possible (look up Cautomaton if you're interested), I can tell you one thing: rocket science is more predictable.

Back before the Windows XP days, there was no API to properly summon a context menu. During some version of Windows XP, there was an internal API that got published as a part of a lawsuit deal in the EU, although it was hardly the most suitable thing. Around Vista, a 'better' API came out, and iirc Windows 7 improved on even that with yet more miracles. Even the latest API is not easy to use, and the ones before that are pure hell.

What I can tell you based on my experiments is that the ordering is both directly and indirectly based on the OS. Why indirectly? Because of those APIs I mentioned. Some of the old ones expect the calling applications to pass the relevant registry keys to them in an array... and the ordering of said array alone can shuffle things considerably. Throw in that the Windows versions actually brought in new features and other messes, and there is no such thing as a simple 'order' for context menu items. Of course, all this still ignores the marvel of the schzophrenic 32/64 bittiness that others have already mentioned.

Probably the most unreliable part of it all are the shell extensions that get loaded. In theory, it ought to be relatively simple in how they are implemented. But programmers do silly things out of sheer incompetence (or to please their bosses). Combined with all the differences that already exist between the Windows versions, these shell extensions can behave wildly different depending on the Windows version, even if they aren't version sniffing.

(And this is the point where I read some more posts in the topic and realize what you were really asking for...)

I think that the stuff you are looking for is really hard to do. Ignoring the wildcard that is dynamic verbs that could screw everything up, some results are possible.

For static verbs, it is basically a matter of automating what you do manually already in the various places (extension / file 'class'). Don't forget to keep an eye on the mime type (or wtf the registry key is called); it also affects the menu items that pop up (although this stuff may actually end up being dynamic, now that I think of it). Since it is pretty much all static in nature, there's no need to simulate anything and the registry gives you your answers.

For dynamic items, it is possible to manually try and figure out what the shell extension modules are, and then manually run them and try to create some results. But false positives would run rampant: ideally you'd want to feed it an empty context menu so that all the things it adds are the ones you are interested in. But if it does sniffing ('put me right underneath send-to' logic for example), that stuff could really backfire and it might not sniff up any items whatsoever.

I know this shit has given me many headaches, and my successes are completely based on tenacity and the blood and tears of others who have tread the path before me. Either way: what you want is not something that is a simple matter of just tearing out existing code. It involves recreating the Windows internals regarding context menus with enough precision to stave off all sorts of awkward edge cases. Even if a lot of the context menu could be simulatedly recreated using a 'phantom' file that kind of matches the criteria you are looking for, it will break, and you won't have your neat separation of 'X is located in All Folders, Y in All Directories, etc'.

All that said: I do not want to discourage you. But the depths of context menus are where masochists venture in need of their fix. That's all. :)

N.A.N.Y. 2011 / Re: NANY 2011 Release: JottiQ v1.2.0
« on: March 24, 2015, 08:35 AM »
Sujay, today is your lucky day, although it isn't really...  :o

Version 1.2.0 is now out. Sadly though, this release adds nothing new; it only prevents breakage in the nearby future. Because upgrading really matters to keep JottiQ working, I decided to engage in some psychological warfare and bump up the minor version to v1.2.0 rather than going with a more sensible v1.1.2. :Thmbsup:

Jotti is in the process of revitalizing his service with new features, amongst which is the ability to deal with the load JottiQ threw at it during its release. (That last thing has been implemented for a while I believe; I haven't seen a server-side queue in ages!) Some of his upcoming changes however are not compatible with JottiQ (broken scan results link, anti-virus images moving and such), so an update is required for continued functioning. :)

I do hope to get back into JottiQ development again. I still have some plans for it. But for now, I am going to wait and see to what degree Jotti's upcoming changes affect things. Some of the features I'd love to implement require a little bit of help from him, and he understandably needs to focus on his current efforts first.

If there is anything else you want to know, check the first post in this topic or see the website. Or simply ask in this topic; I'll be glad to answer any questions there may be.

v1.2.0 (2015-03-24)

    Compatibility release. Jotti is undergoing some changes so we must too. :)
    Upgrading is highly recommended; previous versions of JottiQ may break or
    otherwise show reduced functionality as Jotti improves his service.

Edit: It seems the DCMembers server has some issues at present, so I can't actually update the website right now. But I hopefully will be able to do so soon!

Pages: [1] 2 3 4 5 6 ... 23next