mIRC Home    About    Download    Register    News    Help

Active Threads | Unanswered Past 24 hours | Past 48 hours | Past Week | Past Month | Past Year
General Discussion Jump to new posts
mIRCHub - A github alike but for mIRC Scripting Piratoshi 10/04/26 02:45 PM
Hello everyone. Hello Khaled!

I was thinking, mIRC came from a time when communities like github didn't exists yet.
But considering now we have such tools avaliable, wouldn't be cool to have a github alike but for mIRC Scripting code only?!
a mIRCHub, similar to github.
And if it would be possible to upload our scripting codes to this mIRCHub directly from a button in the "Scripts" dialog in mirc.exe
So we can keep code updated on mIRCHub sync to our scripting in mIRC.exe
I feel that we as a community would benefit a lot from a virtual place where we all can share our mIRC scripting codes if we want to as we edit them in our mIRC client.
What do you all think about this idea?

btw, have a good weekend ๐Ÿ•บ
0 47 Read More
Bug Reports Jump to new posts
mIRC beta Khaled 09/04/26 09:10 AM
The latest beta can be downloaded here and includes the following changes:

Quote
Beta v7.83.3857 changes:
1.Item 29 & 32, changed. The local info HTTP request was using POST
instead of GET, which caused some sites to not reply. After changing
it to GET, almost all sites return valid results. The only sites that
don't work are those that use javascript to fill in the details on
the page after it has loaded.
2.Item 17, updated.
3.Item 35, added.
4.Fixed PCRE UTF support being disabled in the betas:
https://forums.mirc.com/ubbthreads.php/topics/273885
5.Item 15, updated.

Beta v7.83.2820 changes:
1.Item 29, added.
This will scan the reply from the server for the first valid IPv4 or
IPv6 address it can find.
2.Item 26, updated TagLib.
3.Item 30, changed.
4.Item 31, added.
5.Item 32, added.

To minimize requests made to the IP website: if multiple status
windows or /localinfo request an IP lookup, only one call will be
made to the website and the result of that call is applied to any
queued requests. Also, the result is cached for 60 seconds and
re-used. The cache is cleared if mIRC notices that your Windows
network state has changed.

mIRC defaults to icanhazip.com. You can find more sites at:
https://www.wiki.balug.org/wiki/doku.php?id=system:what_is_my_ip_address

There's a great story about icanhazip.com at:
https://blog.apnic.net/2021/06/17/how-a-small-free-ip-tool-survived/

Notes:
1) Some sites will not reply to WinINet requests.
2) Some sites may fail to reply on occasion.

6.Item 33, fixed.
7.Item 34, fixed.

Beta v7.83.1582 changes:
1.Item 28, changed. Experimental.

The installer now starts up in non-administrator mode. When the user
clicks the Install button on the final screen, it checks if it has
write access to the chosen install folder. If it does, it continues
in non-administrator mode. If it does not have write access, it does
the following:

1) The current installer hides its own window.
2) A new installer is started using nsExec::Exec, with command line
parameters, that requests administrator access.
3) The new installer tries to complete the install and, once it
finishes, and the user closes the window, the success/failure return
code is returned to the hidden installer.
4) The hidden installer exits with that return code.

The same method is used by uninstaller.

This required some tricky changes to the NSIS script. The difficult
part was maintaining the flow of the install/uninstall process both
visually for the user and internally for the script when switching
to the elevated installer. The only difference from a user's point
of view should be that administrator mode is not requested the
moment they run the installer but only once the install process
begins, if needed.

Tested on XP to 11.

Beta v7.83.1573 changes:
1.Item 21, fixed gpf bug.
2.Item 26, updated.
3.Item 27, fixed https://forums.mirc.com/ubbthreads.php/topics/273809
4.Item 10, Microsoft has renamed "Trusted" to "Artifact" signing.

Beta v7.83.1558 changes:
1.Item 1, added. Required changes to how optional text is parsed in
custom dialogs. Also required changes to the (optional) feature
that is used by all dialogs.
2.Item 2, updated. A single secure RNG function has been created that
attempts in this order: BCryptGenRandom(), CryptGenRandom(), and
RtlGenRandom(). There are many online discussions about these APIs,
how they work on different versions of Windows, etc. BCryptGenRandom()
is the current recommended method, CryptGenRandom() is a deprecated
method, and RtlGenRandom() works on XP.
3.Item 3, fixed. This was resulting in a wave file being left in the
Windows Temp folder each time mIRC exits.
4.Item 4, changed.

The standard editbox performs better than riched20.dll at font
linking/fallback on Windows 7 onwards. mIRC did, at one point, switch
to using msftedit.dll, which is a newer richedit control, but this
was reverted in a subsequent release due to some users experiencing
backward compatibility issues.

The reason mIRC started using the richedit control was because 1) it
allowed more than 30k of text, which used to be a limitation of
standard editboxes, and 2) it handled Unicode characters better.
Technically, mIRC could switch back to using a standard editbox
except that richedit has one really useful other feature: undo
history. This beta is now using the more modern msftedit.dll
again for testing.

5.Item 5, fixed. This only happens if richedit editboxes are not
being used.
6.Item 6, updated. Experimental.

Added a new switch for blowfish and AES encryption. The number of
single-letter switches was running out, making it difficult to add
future ciphers/options, so has been changed to use named options.

The newer blowfish implemention is not compatible with the older
one because it:

1) Allows the use of both salt and iv, requiring changes to the
way these are applied
2) Performs many checks for incompatible switches/parameters

The older $encode()/$decode() blowfish has been left in place for
backward compatibility with scripts that use it but will no longer
be documented.

Openssl.exe and Perl's Crypt::CBC were used to test combinations of
options + inputs/outputs.

7.Item 7, updated.
8.Item 8, fixed https://forums.mirc.com/ubbthreads.php/topics/273726
9.Item 9, changed https://forums.mirc.com/ubbthreads.php/topics/273732
10.Item 10, updated.

The DigiCert code signing certificate was up for renewal. Due to
the high cost + signing now requires a Token/HSM, I thought I'd try
out Microsoft's Azure Trusted Signing. Setting up Trusted Signing
is ... arduous. Thankfully, several online guides made the process
simpler and it seems to be working. Notes:

1) Newer versions of signtool.exe, which are needed for Trusted
Signing, will not allow use of SHA1, which is required for XP. mIRC
has been dual signed with SHA1 and SHA256 for many years. This means
that, from this point on, mIRC will only be signed with SHA256.

2) Azure issues Trusted Signing certificates with very short
validity, so you'll notice that the Valid From/To date for the
certificate is only three days long. The validity of the signed exe
depends only on the timestamp counter signature which verifies
that the certificate was valid at the time of signing.

11.Item 11, updated.
12.Item 12, fixed https://forums.mirc.com/ubbthreads.php/topics/273753
13.Item 13, fixed https://forums.mirc.com/ubbthreads.php/topics/273777
14.Item 14, updated.

See the IRC URL draft at:
https://datatracker.ietf.org/doc/html/draft-butcher-irc-url-04

The fix in v7.55 for CVE-2019-6453 prevents the use of a channel
password after the channel name, so the key= URL parameter is
now used for this.

Also, some browsers now actively block opening some URL types with
some port numbers, ie. specifying :6667 after an address will
not work, so a port= URL parameter has been added.

Also added support for:
1) isserver/isnetwork: if isnetwork is specified, mIRC will not try
to connect if a matching group name is not found in servers.ini.
2) ischannel/isuser: if isuser is specified, mIRC will open a query
window to that user on connect and perform a /whois which is shown
in the query window.
3) channel name: if not prefixed with a known channel prefix ie.
#&+%! mIRC will prefix the name with #.
4) Support for IPv6 addresses enclosed in [] brackets.

The parser can be tested by enabling Chat links in the Options/IRC
/Catcher dialog and then using /run with various combinations of
parameters, eg.:

/run irc://user:pass@test.org:7001,isserver/#test,ischannel?key=test&port=1234
/run irc://EFnet,isnetwork/test,isuser

If a user/pass/port is specified, these will over-ride any settings
found in servers.ini for a matching network/server.

The old link request dialogs have also been updated. mIRC will now
decide whether it needs to open a new server window based on your
currently open status windows/connections.

15.Item 15, updated.
16.Item 16, fixed.
17.Item 17, updated.
18.Item 18, fixed.
19.Item 19, added.
20.Item 20, updated. It appears that irc.ircnet.com is now the official
address for connecting to an open server.
21.Item 21, fixed.
22.Item 22, added.
23.Item 23, fixed https://forums.mirc.com/ubbthreads.php/topics/273804
24.Item 24, changed.
25.Item 25, changed. Tested on XP to 11.

Changes:
1.Added custom dialog editbox option 'optional' for grayed out optional
text indicator. If followed by "quoted" text, this is used as the
optional text.
2.Updated all features that use secure RNG to standardize on a single
function that chooses between the best available method for the
Windows version being used.
3.Fixed DirectShow temporary wave file not being deleted on exit.
4.Changed editbox in Script Editor and Status/Channel/Query windows to
use the msftedit.dll richedit control editbox for improved Unicode
support.
5.Fixed standard editbox displaying blue line under editbox on Windows
11 in Script Editor.
6.Added $encode()/$decode() switch 'k' to support encryption using the
format:

$encode(&var,k,options,%key,%salt,%iv)

where options can be a combination of:

bf-cbc | bf-ecb | aes-cbc | aes-ecb | aes-gcm
salt text | binvar
iv text | binvar
header none | salt
hash md5 | sha256 | pbkdf2 iterations
padding none | pkcs7

For example, to use a binary variable, mime encoding, blowfish, cbc,
random salt, iv, and pbkdf2:

$encode(&var, bmk, bf-cbc iv hash pbkdf2, %key, %iv)

Notes:
1. For backward compatibility, the old $encode()/$decode() blowfish
support has been left in place but is no longer documented.
2. Salt and iv must be the correct length for the encryption being
used, ie. salt 8 and iv 8 characters for blowfish, and salt 8 and
iv 16 for AES. This is different from the older method that
zero-extended/chopped salts/ivs of the wrong length.
3. Hash, the key derivation method, can be md5, sha256, or pbkd2
for blowfish, and pbkdf2 for AES. For pbkdf2, an iteration count
can be specified (the default count is 10000 for OpenSSL
compatibility).
4. If a salt/iv is not specified a secure random salt/iv is
generated.
5. Incompatible/invalid combinations of parameters/switches will
halt a script and report an error, unlike the older method.

7.Updated SSL certificate dialog to include OpenSSH fingerprint and
extended $sslhash() with .ssh property.
8.Fixed $did().visible state not being set correctly for custom dialog
icons.
9.Changed $urlget() to retry a connection without compression in the
event of a WinINet decode error.
10.Updated code signing certificate to use Azure Artifact Signing.
11.Updated CA root certificates cacert.pem file.
12.Fixed Scripts Editor More dialog editbox display bug when in dark
mode.
13.Fixed menubar display bug when in dark mode and restoring mIRC from
its tray icon.
14.Updated irc/ircs link parser to support features in the IRC URL
draft specification.
15.Updated OpenSSL library to v3.5.6 that includes RCE fix.
16.Fixed $crc() and $crc64() not allowing a $null parameter like other
hash identifiers.
17.Updated ADA IDNA library to v0.5.0.
18.Fixed hotlinks not handling user@ipv6 address format.
19.Added hotlink support for more prefixes, such as signal, slack,
spotify, steam, viber, and whatsapp.
20.Changed IRCnet default server to irc.ircnet.com due to issues
with open.ircnet.net. mIRC will automatically update servers.ini
if it includes the old server.
21.Fixed /server -a not preserving existing entry's codepage if not
specified as a parameter.
22.Extended most features/identifiers to support sha224.
23.Fixed XP/Wine gpf bug when older file dialogs are used to select
a file.
24.Changed irc/ircs links support so that, if enabled in the Options
Catcher dialog, mIRC in portable mode will add irc/ircs links
support to the registry on startup and remove it on exit.
25.Changed how mIRC handles signout/shutdown on Windows 11 to resolve
possible issues with not cleaning up/saving settings on exit.
26.Updated libraries to TagLib v2.2.1 and Zlib v1.3.2.
27.Fixed Address Book nick colors "idle time" display bug.
28.Changed installer to no longer require administrator access on
startup. The installer will only request administrator access if
a user installs to a folder that requires it.
29.Added /localinfo -w [URL] switch that extracts the IPv4/6 address
returned by a website.
30.Changed Find dialog to treat _ underscore as part of a whole word
when opening the find dialog over a word.
31.Added /copyini <fname> [topic] [newtopic] to copy topics in an ini
file.
32.Added Options/Local dialog lookup method via website that returns
an IP address.
33.Fixed custom DLL LOADINFO mBytes being set to incorrect wide char
byte length when it should be smaller char byte length since
bUnicode is set to FALSE by default.
34.Fixed user Treebar icons that were incorrectly sized.
35.Added support for displaying an MDI window's System menu when you
right-click on its titlebar.
1 458,583 Read More
Bug Reports Jump to new posts
Re: Horizontal scroller incorrectly sized Khaled 04/04/26 12:54 PM
Thanks for your bug report. This is actually by design. There are sanity checks with arbitrary limits like this one in most features in mIRC. In this case, the maximum scrollable horizontal width for any listbox is 9999 pixels. It could be increased to a maximum of 32767/65535 (depends on the Windows version), however considering the limit has been in place for decades, it's not something I would consider changing at this point.
1 145 Read More
Bug Reports Jump to new posts
Re: Beta v7.83.2820 PCRE Khaled 03/04/26 01:05 PM
Thanks for spotting this (again!) - the library had to be rebuilt for the current beta and the configuration was reset. I've fixed this so it doesn't happen again. Fixed in the next beta.
1 196 Read More
Scripts & Popups Jump to new posts
Re: Close window Epic 01/04/26 03:40 PM
Originally Posted by TECO
This is perfect ... code!
โ€‡โ€‡โ€‡โ€‡ [Linked Image from i.ibb.co] [Linked Image from i.ibb.co]
โ€‡
โ€‡
8 973 Read More
Developers Jump to new posts
mIRC Language Extension for Visual Studio 2022+ goblin58 01/04/26 07:39 AM
I'm happy to release my mIRC language extension for Visual Studio 2022+.

I mostly work in Visual Studio and recently while working on some dynamic link library projects I found myself swapping from Visual Studio to VS Code all the time. I still use VS Code for most of mIRC scripting however It's nice to be able to stay in the one IDE.

I hope everyone finds this useful.

See https://github.com/rabbit59/mIRCLanguageExtension
0 156 Read More
Scripts & Popups Jump to new posts
Re: Question about $calc() / dynamic variable Khaled 28/03/26 07:39 PM
As Ook mentioned, $() can resolve the issue. However, one of the reasons why it's not working in your example is that [ ] brackets must be space-separated from everything around them. In your example the ] bracket is attached to the ) bracket.
2 260 Read More
Feature Suggestions Jump to new posts
CHGHOST on/off TECO 28/03/26 05:00 PM
Hi Khaled,

I suggest that, since CHGHOST in mIRC is not enabled by default, a command be created for it, like this:

/CHGHOST on/off

Or add a check to the mIRC options.

This would allow us to see a message in the channels where we are and where the user who changes hosts is also located.

Example:

18:51 TECO [TECO@vhost.cferreira.org] changed host to TECO@suporte.PTirc.org

I think this suggestion would make accessing CHGHOST easier without us having to resort to creating code like the one I created and posted here on the forum.

Hug wink
0 130 Read More
Scripts & Popups Jump to new posts
CHGHOST TECO 27/03/26 01:54 PM
Hi guys,

I would like to know if anyone can help me.

I need the CHGHOST event message.

I've been researching and mIRC, by default, doesn't show a message when a user changes hosts.

I debug the mIRC and found this information:

<- @time=2026-03-27T12:55:56.782Z :Tiago!Tiago@vhost.cferreira.org CHGHOST Tiago suporte.PTirc.org
<- @time=2026-03-27T13:28:35.041Z :Tiago!Tiago@suporte.PTirc.org CHGHOST Tiago vhost.cferreira.org

And I needed that whenever the user switches accounts, it shows both the previous and the new account:

Example:

12:34 ยท Tiago [Tiago@vhost.cferreira.org] has changed host to Tiago@suporte.PTirc.org

I created this code:
Code
alias pcb { echo $1 $+ $msgstamp $2- }

raw CHGHOST:*:{
  var %c = 1
  while ($comchan($nick,%c)) {
    pcb -i5mt $v1 ยท $nick has changed host to $+($nick,@,$2)
    inc %c
  }
}

And in the channels where I am and the user is also present, the message appears like this:

12:24 ยท Tiago has changed host to Tiago@suporte.PTirc.org
12:25 ยท Tiago has changed host to Tiago@vhost.cferreira.org

However, I can't find a solution to make the previous host appear in the message.

I would appreciate it if someone could help me wink

I found the solution:
Code
alias pcb { echo $1 $+ $msgstamp $2- }

raw CHGHOST:*:{
  var %c = 1, %oldmask = $gettok($fulladdress,2,33), %ident = $gettok(%oldmask,1,64), %newmask = $+(%ident,@,$2)
  while ($comchan($nick,%c)) {
    pcb -i5mt $v1 ยท $nick ( $+ %oldmask $+ ) has changed host to %newmask
    inc %c
  }
  haltdef
}

Return:

18:51 ยท Tiago (~Tiago@vhost.cferreira.org) has changed host to ~Tiago@suporte.PTirc.org
0 145 Read More
Developers Jump to new posts
Re: Adding native FiSH support Khaled 25/03/26 10:06 AM
FiSH/SMP update/notes/observations:

FiSH uses NOTICE for the key exchange, so it needs both NOTICE and PRIVMSG to work. I can understand why this was chosen at the time but if I was going to implement it today, for an IRC client, just using a PRIVMSG would make more sense and perhaps CTCP, which was designed for direct client-to-client messages to distinguish them from normal messages. OTR, for example, sends a PRIVMSG with the ?OTR? prefix, so everything takes place in the same message context. This format could then also have been used in DCC Send/Chat.

Another issue is that a NOTICE is usually meant to get attention. An unrecognized CTCP message is often just printed quietly in the server window. If a non-keyexchange/encryption supporting client receives an unrecognized NOTICE, this will be a lot more annoying than a CTCP message. This is important because one of the FiSH features that can be enabled is to send a key exchange request automatically if a user tries to message you and you do not have keys set up for them.

Another issue is that with the current protocol, the initiating client sends DH1080_INIT and the receiving client sends DH1080_FINISH. For any number of reasons, the initiating client may reject the DH_1080_FINISH, causing the key exchange to fail, but only they will know this. The receiving client can only assume that everything went well. It would have made sense for the initiating client to send one more DH1080_FINISH as a final confirmation. From a user point of view, the initiating client will print "*** Key exchange: successful" or "*** Key exchange: fail". The receiving client can only display "*** Key exchange: sent reply" without confirmation of success. That said, at worst (assuming this wasn't an intentional failure/downgrade forced by an MITM), the receiving client will send encrypted messages that the sending client cannot decrypt.

FiSH uses named events DH1080_INIT / DH1080_FINISH for key exchange. To add a new key exchange method, we have to add more named events, eg. X25519_INIT / X25519_FINISH (like some newer FiSH implementations). It might have been better to use a generic named event such as FISH_INIT/FISH_FINISH which could then be used to negotiate both key exchange and encryption methods. Or just an OTR-style prefix like ?FiSH?. As it is, I have added new X25519_INIT / X25519_FINISH events. But this means that we will need to add even more events if we want to add new key exchange / encryption methods. Ideally, FiSH would be updated to use a new, forward-looking key exchange / encryption protocol but this would break backward compatibility.

One other option is to just extend DH1080_INIT. We can avoid adding more events and just treat the DH1080_INIT / DH1080_FINISH as generic events. A client can send DH1080_INIT as usual but append tags, such as X25519 CHAHCA20-POLY1305 AES-GCM, to the message, just like "CBC" is appended currently. If a client wants to use a particular encryption method, it includes its tag in the reply to DH1080_FINISH. If it wants to use a different key exchange method, it can restart the key exchange by replying with DH1080_INIT X25519, and the initiating client will resend DH1080_INIT with an X25519 key. As far as I can see, this should be fully backward compatible while supporting new key exchange / encryption methods. At the cost of being a bit of a hack :-]

SMP notes:

Socialist Millionare Protocol (SMP) requires five steps of back and forth messages and I had to choose to use either NOTICEs or PRIVMSGs. Ideally, this would have used CTCP PRIVMSGs but seeing as FiSH uses NOTICE for key exchange, I have opted for NOTICE as well. One thing to note is that FiSH encrypts PRIVMSGs by default post-key exchange but not NOTICEs. Technically, SMP does not need to be encrypted. I created new events SMP_INIT / SMP_REPLY / SMP_FINISH. SMP uses the group 2 1536-bit prime from RFC 3526, which is 192-bytes long. During the SMP exchange between clients, each message can be much longer the standard 512 byte limit. So this requires multiple NOTICEs per message, each containing part of the encoded message, that are assembled at the end of that sequence to be used in that SMP computation step. Since SMP requires five steps, each of which need 2-5 NOTICEs to transmit the full line, the total number of NOTICEs sent can be fifteen or more. That's... not great.

Note that this is different to how OTR uses SMP. OTR first creates private/public DSA keys that it then uses to establish long-term identification of parties and binding/signing of the initial session (Trust On First Use) and securing the SMP (if the user chooses to use it by verifying a secret) to prevent MITM. In mIRC's case, we are not generating private/public keys and the SMP is not secure - an MITM could simply pass it unchanged between parties to make us think they are not there. What SMP does, even with MITM, is verify a shared secret. I could add support for DSA keys but, at that point, I would essentially be re-inventing OTR. Considering that I was only planning on adding support for FiSH...

An alternative to SMP: CPace, which is a recommended modern balanced PAKE, that integrates authentication with key exchange, and requires fewer messages/steps than SMP. A user supplies a password, the key exchange is initiated, the other user supplies a password, if they match, both key exchange and authentication complete and the keys are secure. The difference here is that users are required to perform password authentication from the start. With OTR, authentication with SMP is optional after key exchange, to make the process user-friendly. Technically, we could still implement this as 1) perform a normal DH1080 key exchange without password authentication, which is susceptible to MITM and then 2) allow password authentication using CPace which guarantees secure keys.

Perhaps establishing a well thought out, standardised protocol for key exchange / encryption negotiation for IRC clients might be something for IRCv3.

Using SMP/CPace leads to another issue: these require the receiving client to answer a question to complete verification. A dialog suddenly popping up in your client on request from another user is probably not a good idea, so this needs to be implemented in a way that can't be spammed but is easy for non-techies to use. The developers of OTR already went through this entire process and published papers about it. The Pidgin OTR plugin adds visual cues/buttons to the chat window to let a user know that their chat is/is not secure/verified. I have intentionally tried to keep mIRC's GUI/windows minimalist / unencumbered by visual weight (which admittedly is not user-friendly - I expect most users have to be told that they can find window settings in the System menu), so adding a secure/verify visual button/cue to a query/chat window is going to be a challenge - there is no point in adding it if it isn't at least a little bit annoying and doesn't stand out. Users have to know that their session, even though encrypted, is actually not secure.

In any case, I am currently working on a CPace implementation.
5 1,039 Read More
Scripts & Popups Jump to new posts
On Join HadesSaint 24/03/26 06:31 PM
good evening!!! on my remote.partjoin i have this

{ putmessaget # %chatjoincolor *** $nick ( $+ $gettok($address($nick,5),2,33) $+ ) is joined the channel # *** | halt }

*** pippo (ident@host) is joined the channel #pippo ***

i like, if possibile, insert the country variable on join (i'm Oper)

Example:

*** pippo (ident@host) [ES] is joined the channel #pippo


I haven't found a var $country

Tnk y for help smile
0 115 Read More
Feature Suggestions Jump to new posts
Re: Editable Language Files Fernet 23/03/26 04:04 PM
Originally Posted by Fernet
I finally gave birth: here you can download the file for the Italian language:

mirc783-it-IT.dll

My mistake!!!
This is the right link:

mirc783-it-IT.dll
36 34,535 Read More
Feature Suggestions Jump to new posts
Re: Missing Documentation KindOne 22/03/26 06:04 PM
Custom Windows is missing the number '1' for the 'minimize window'?

Code
n[N]    = minimize window, 2 = minimize without auto-expanding item in treebar
59 131,722 Read More
Scripts & Popups Jump to new posts
[Release] Xhtml.dll v1.0.0 โ€“ HTML Engine & Runtime 3ncriptado 22/03/26 05:51 PM
Xhtml.dll v1.0.0 โ€“ Modern Web Browser Engine for mIRC

Xhtml.dll is a modern replacement for the legacy nhtml.dll, bringing the power of Microsoft Edge WebView2 (Chromium) directly into mIRC.

It allows you to embed fully functional web browsers inside mIRC windows with full support for modern web technologies.


โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”
โœจ Features
โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”

- Modern Web Engine (Edge WebView2 / Chromium)
- Full Web Standards Support (HTML5, CSS3, ES6+, WebGL, WebAssembly)
- Framework Compatible (React, Vue, Angular, etc.)
- Full Mouse & Keyboard Interaction
- Resizable Browser Windows
- Multiple Instances Support
- Simple and Clean API for mIRC
- Drop-in Replacement for nhtml.dll


โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”
๐Ÿ“‹ Requirements
โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”

- Windows 10 / 11
- mIRC 7.x or later
- Microsoft Edge WebView2 Runtime


โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”
๐Ÿš€ Quick Start
โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”

Installation:

1. Download Xhtml.dll
2. Copy it to your mIRC root folder
3. Install WebView2 Runtime if not installed
4. Load the script:

/load -rs scripts/xhtml.mrc


Basic Usage:

; Open a URL
/xhtml https://www.google.com

; Close the browser
/xhtml.close


โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”
๐Ÿ“š API (Core Functions)
โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”

attach -> Attach WebView2 to a window
navigate -> Navigate to a URL
detach -> Detach and cleanup
resize -> Resize browser
goback -> Navigate back
goforward -> Navigate forward
refresh -> Reload page
stop -> Stop loading
geturl -> Get current URL


โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”
๐Ÿงช Example
โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”

alias mybrowser {
window -pdoks @MyBrowser 100 100 1200 800
dll Xhtml.dll attach $window(@MyBrowser).hwnd
.timer 1 2 dll Xhtml.dll navigate https://github.com
}


โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”
๐Ÿ†š Why Xhtml.dll?
โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”

- Uses Chromium instead of Internet Explorer
- Supports modern JavaScript
- Works with modern frameworks
- Actively maintained
- Designed for real-world web usage inside mIRC


โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”
โš ๏ธ Notes
โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”

- Wait 2โ€“3 seconds after attach before navigate
- Make sure WebView2 Runtime is installed
- Use correct architecture (x86 / x64)


โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”
๐Ÿ”— Project
โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”

REPO: GitHub

โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”

Made with โค๏ธ for the mIRC community
0 110 Read More
Bug Reports Jump to new posts
Re: Beta 7.83.1582 TECO 22/03/26 03:33 PM
Thank you wink
2 423 Read More