<?xml version="1.0" encoding="UTF-8"?>

<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
	<channel>
		<title>VBForums</title>
		<link>https://www.vbforums.com/</link>
		<description>Visual Basic Discussions plus .NET, C#, game programming, and more (http://www.VBForums.com)</description>
		<language>en</language>
		<lastBuildDate>Sun, 19 Jul 2026 02:18:21 GMT</lastBuildDate>
		<generator>vBulletin</generator>
		<ttl>60</ttl>
		<image>
			<url>https://www.vbforums.com/images/misc/rss.png</url>
			<title>VBForums</title>
			<link>https://www.vbforums.com/</link>
		</image>
		<item>
			<title>how to close Access aplication if is opened</title>
			<link>https://www.vbforums.com/showthread.php?912148-how-to-close-Access-aplication-if-is-opened&amp;goto=newpost</link>
			<pubDate>Sat, 18 Jul 2026 05:19:15 GMT</pubDate>
			<description>How to close Access aplication if is opened?</description>
			<content:encoded><![CDATA[<div>How to close Access aplication if is opened?</div>

]]></content:encoded>
			<category domain="https://www.vbforums.com/forumdisplay.php?1-Visual-Basic-6-and-Earlier">Visual Basic 6 and Earlier</category>
			<dc:creator>luca90</dc:creator>
			<guid isPermaLink="true">https://www.vbforums.com/showthread.php?912148-how-to-close-Access-aplication-if-is-opened</guid>
		</item>
		<item>
			<title>Registry.CurrentUser.DeleteSubkey issues VS2026 VB10</title>
			<link>https://www.vbforums.com/showthread.php?912147-Registry-CurrentUser-DeleteSubkey-issues-VS2026-VB10&amp;goto=newpost</link>
			<pubDate>Fri, 17 Jul 2026 16:59:20 GMT</pubDate>
			<description><![CDATA[Given the following:

Code:
---------
My.Computer.Registry.SetValue("HKEY_CURRENT_USER\MyTestKey", "MyTestKeyValue", "This is a test value.")
---------

I wish to do one of the following:
  a. Delete "MyTestKeyValue" or
  b. Set "This is a test value" to Nothing.

This is in part to reset settings such as Background Color, Width, Height, Position-x, Position-y (all are REG_DWORD).
DeleteSubKey is not working. Error says key does not exist.
SetValue to Nothing also throws errors.

Thanks in advance.]]></description>
			<content:encoded><![CDATA[<div>Given the following:<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code">My.Computer.Registry.SetValue(&quot;HKEY_CURRENT_USER\MyTestKey&quot;, &quot;MyTestKeyValue&quot;, &quot;This is a test value.&quot;)</code><hr />
</div><br />
I wish to do one of the following:<br />
  a. Delete &quot;MyTestKeyValue&quot; or<br />
  b. Set &quot;This is a test value&quot; to Nothing.<br />
<br />
This is in part to reset settings such as Background Color, Width, Height, Position-x, Position-y (all are REG_DWORD).<br />
DeleteSubKey is not working. Error says key does not exist.<br />
SetValue to Nothing also throws errors.<br />
<br />
Thanks in advance.</div>

]]></content:encoded>
			<category domain="https://www.vbforums.com/forumdisplay.php?25-Visual-Basic-NET">Visual Basic .NET</category>
			<dc:creator>scot-65</dc:creator>
			<guid isPermaLink="true">https://www.vbforums.com/showthread.php?912147-Registry-CurrentUser-DeleteSubkey-issues-VS2026-VB10</guid>
		</item>
		<item>
			<title><![CDATA["Concurrency violation: the DeleteCommand affected 0 of the expected 1 records."]]></title>
			<link>https://www.vbforums.com/showthread.php?912146-quot-Concurrency-violation-the-DeleteCommand-affected-0-of-the-expected-1-records-quot&amp;goto=newpost</link>
			<pubDate>Wed, 15 Jul 2026 20:42:54 GMT</pubDate>
			<description><![CDATA[I have an array of DataTables and Adapters

In this instance I have assigned one of the tables to a unique DataTable varable "rs" which is associated with the giLastTableIndex index as appears in the update command below

I wish to delete a row and update the DataTable


Code:
---------
Dim rRow As DataRow

For Each rRow In rs.Rows
				With rRow
					If .Item("DVN_SHAFT") = sDVN_SHAFT And .Item("DP") = fDP And .Item("PR_ANG") = fPR_ANG And .Item("DVR_N_T") = fDVR_N_T And .Item("DVN_N_T") = fDVN_N_T And .Item("DVR_AD") = fDVR_AD And .Item("DVN_AD") = fDVN_AD Then
						rRow.Delete()
						Exit For

					End If
				End With
Next rRow

iRet = gda(giLastTableIndex).Update(gdt(giLastTableIndex))
---------
The update results in the concurrency violation

I have looked for instances where I am holding the DataTable open with another variable and I do not believe I have any.

Suggestions?]]></description>
			<content:encoded><![CDATA[<div>I have an array of DataTables and Adapters<br />
<br />
In this instance I have assigned one of the tables to a unique DataTable varable &quot;rs&quot; which is associated with the giLastTableIndex index as appears in the update command below<br />
<br />
I wish to delete a row and update the DataTable<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code">Dim rRow As DataRow<br />
<br />
For Each rRow In rs.Rows<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; With rRow<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; If .Item(&quot;DVN_SHAFT&quot;) = sDVN_SHAFT And .Item(&quot;DP&quot;) = fDP And .Item(&quot;PR_ANG&quot;) = fPR_ANG And .Item(&quot;DVR_N_T&quot;) = fDVR_N_T And .Item(&quot;DVN_N_T&quot;) = fDVN_N_T And .Item(&quot;DVR_AD&quot;) = fDVR_AD And .Item(&quot;DVN_AD&quot;) = fDVN_AD Then<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; rRow.Delete()<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Exit For<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; End If<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; End With<br />
Next rRow<br />
<br />
iRet = gda(giLastTableIndex).Update(gdt(giLastTableIndex))</code><hr />
</div>The update results in the concurrency violation<br />
<br />
I have looked for instances where I am holding the DataTable open with another variable and I do not believe I have any.<br />
<br />
Suggestions?</div>

]]></content:encoded>
			<category domain="https://www.vbforums.com/forumdisplay.php?25-Visual-Basic-NET">Visual Basic .NET</category>
			<dc:creator>Richard Friedman</dc:creator>
			<guid isPermaLink="true">https://www.vbforums.com/showthread.php?912146-quot-Concurrency-violation-the-DeleteCommand-affected-0-of-the-expected-1-records-quot</guid>
		</item>
		<item>
			<title><![CDATA[[VB6/TB] TC6 (TwinClient 6) — SQLite for VB6 and TwinBasic]]></title>
			<link>https://www.vbforums.com/showthread.php?912145-VB6-TB-TC6-(TwinClient-6)-—-SQLite-for-VB6-and-TwinBasic&amp;goto=newpost</link>
			<pubDate>Wed, 15 Jul 2026 16:40:29 GMT</pubDate>
			<description><![CDATA[*TC6SQLite* (https://github.com/wqweto/TC6/releases) is another "em dash repo" namely Claude's reimplementation of the SQLite subsystem of RC6 as a single Ax-DLL.

Note that TB's x64 port is not ready i.e. still uses winsqlite3.dll and does not embed sqlite in final Ax-DLL.

cheers,
</wqw>]]></description>
			<content:encoded><![CDATA[<div><a rel="nofollow" href="https://github.com/wqweto/TC6/releases" target="_blank" rel="nofollow"><b>TC6SQLite</b></a> is another &quot;em dash repo&quot; namely Claude's reimplementation of the SQLite subsystem of RC6 as a single Ax-DLL.<br />
<br />
Note that TB's x64 port is not ready i.e. still uses winsqlite3.dll and does not embed sqlite in final Ax-DLL.<br />
<br />
cheers,<br />
&lt;/wqw&gt;</div>

]]></content:encoded>
			<category domain="https://www.vbforums.com/forumdisplay.php?43-CodeBank-Visual-Basic-6-and-earlier">CodeBank - Visual Basic 6 and earlier</category>
			<dc:creator>wqweto</dc:creator>
			<guid isPermaLink="true">https://www.vbforums.com/showthread.php?912145-VB6-TB-TC6-(TwinClient-6)-—-SQLite-for-VB6-and-TwinBasic</guid>
		</item>
		<item>
			<title>Extract date from string</title>
			<link>https://www.vbforums.com/showthread.php?912144-Extract-date-from-string&amp;goto=newpost</link>
			<pubDate>Wed, 15 Jul 2026 08:10:46 GMT</pubDate>
			<description><![CDATA[I just have myvar="Fri, 05 Jun 2026 08:36:39 GMT"

how to transform in:

dt=05/06/2026]]></description>
			<content:encoded><![CDATA[<div>I just have myvar=&quot;Fri, 05 Jun 2026 08:36:39 GMT&quot;<br />
<br />
how to transform in:<br />
<br />
dt=05/06/2026</div>

]]></content:encoded>
			<category domain="https://www.vbforums.com/forumdisplay.php?1-Visual-Basic-6-and-Earlier">Visual Basic 6 and Earlier</category>
			<dc:creator>luca90</dc:creator>
			<guid isPermaLink="true">https://www.vbforums.com/showthread.php?912144-Extract-date-from-string</guid>
		</item>
		<item>
			<title>New strange behavior</title>
			<link>https://www.vbforums.com/showthread.php?912143-New-strange-behavior&amp;goto=newpost</link>
			<pubDate>Sun, 12 Jul 2026 20:29:16 GMT</pubDate>
			<description><![CDATA[This has happened three days in a row now.

I write something using quick reply.  Click "Post quick reply" , cloudflare askes me to verify I'm a human, I check the box, it thinks for a couple of seconds and then goes to a blank screen.  When I restart VBF the post isn't there.

Luckily, I can use the post autosave and it restores the post.  Then when I save the post it works fine.  Never had this issue before.

I'm using Chrome.]]></description>
			<content:encoded><![CDATA[<div>This has happened three days in a row now.<br />
<br />
I write something using quick reply.  Click &quot;Post quick reply&quot; , cloudflare askes me to verify I'm a human, I check the box, it thinks for a couple of seconds and then goes to a blank screen.  When I restart VBF the post isn't there.<br />
<br />
Luckily, I can use the post autosave and it restores the post.  Then when I save the post it works fine.  Never had this issue before.<br />
<br />
I'm using Chrome.</div>

]]></content:encoded>
			<category domain="https://www.vbforums.com/forumdisplay.php?6-Forum-Feedback">Forum Feedback</category>
			<dc:creator>wes4dbt</dc:creator>
			<guid isPermaLink="true">https://www.vbforums.com/showthread.php?912143-New-strange-behavior</guid>
		</item>
		<item>
			<title>Project to run IA locally in VB.NET</title>
			<link>https://www.vbforums.com/showthread.php?912142-Project-to-run-IA-locally-in-VB-NET&amp;goto=newpost</link>
			<pubDate>Sun, 12 Jul 2026 11:52:26 GMT</pubDate>
			<description><![CDATA[LocalIAdotNet
LocalIAdotNet is a fully local Windows Forms application written in VB.NET for downloading, running, and comparing local large language models.

Features
Analyzes CPU, RAM, GPU, VRAM, instruction sets, and free disk space.
Recommends compatible GGUF models for the current computer.
Downloads models from Hugging Face with resume support.

Installs and runs llama.cpp automatically.
Supports CPU, Vulkan, and CUDA backends.

Provides a local chat interface with streaming responses.
Displays total response time, estimated input tokens, estimated output tokens, and output tokens per second.
Supports PDF, image, Excel, Word, PowerPoint, CSV, JSON, XML, HTML, SQL, source code, and plain-text attachments.
Extracts text locally from supported documents.
Renders scanned PDF pages as images for compatible vision models.
Detects already installed runtimes and models to avoid unnecessary downloads.
Supports runtime discovery for llama.cpp, Ollama, LM Studio, vLLM, Jan, GPT4All, Docker Model Runner, and Apple MLX.
Requirements
Windows 10 or Windows 11, 64-bit.
Visual Studio 2022 with the .NET desktop development workload.
.NET 8 SDK.
Internet access for restoring NuGet packages and downloading runtimes or models.
Build
Open LocalIAdotNet.sln, select Release and x64, then build the solution.

You can also run:

build.cmd
To create a self-contained Windows x64 publication:

publish-win-x64.cmd
The published application is generated under the standard bin\Release\net8.0-windows...\win-x64\publish folder.

First run
Start LocalIAdotNet.
Click Analyze PC.
Review the automatically ranked model list.
Install or select a runtime.
Download a compatible model if required.
Start the model.
Open the Local chat tab and send a message.
Downloaded content is stored under:

%LOCALAPPDATA%\LocalIAdotNet
Supported document formats
Local text extraction
PDF files containing a text layer.
XLSX and XLSM workbooks.
DOCX documents.
PPTX presentations.
TXT, CSV, MD, JSON, XML, HTML, SQL, VB, CS, PHP, and similar text-based files.
Vision analysis
With a compatible multimodal model, LocalIAdotNet can analyze:

PNG, JPG, JPEG, BMP, GIF, TIFF, and WEBP images.
Scanned PDFs or PDFs without an extractable text layer.
By default, only the first pages of a scanned PDF are rendered to limit memory use and context size.

Legacy XLS, DOC, and PPT files must first be saved in modern Office Open XML formats.

Privacy
After the initial runtime and model downloads:

Inference runs on the local computer.
Attached documents remain on the local computer.
The embedded server listens only on 127.0.0.1.
Documents are not uploaded to Hugging Face or GitHub.
A Hugging Face token is used only when a repository requires authentication or license acceptance.
The Hugging Face token is currently stored in the local settings.json file. For production distribution, consider protecting it with Windows DPAPI.

Local API
When a llama.cpp model is running, llama-server exposes an OpenAI-compatible endpoint:

http://127.0.0.1:18456/v1/chat/completions
The port can be changed in the Settings tab.

Example request body:

{
  "model": "local-model",
  "messages": [
    {
      "role": "system",
      "content": "You are a precise local assistant."
    },
    {
      "role": "user",
      "content": "Summarize this text."
    }
  ]
}

Acceleration
The application recommends:
CUDA for supported NVIDIA GPUs.
Vulkan for other compatible GPUs.
CPU when no suitable GPU backend is available.
If a CUDA package is not available for a specific llama.cpp release, the installer can fall back to Vulkan or CPU.

Limitations
Hardware recommendations are estimates and should be validated with real benchmarks.
WMI may report inaccurate VRAM values for some non-NVIDIA GPUs.
Large documents are truncated to protect the context window.
Password-protected documents cannot be read.
Local models can produce incorrect information; important output should be reviewed.
A built-in vector database and RAG knowledge base are not yet included in this version.

Next step, attaching RAG]]></description>
			<content:encoded><![CDATA[<div>LocalIAdotNet<br />
LocalIAdotNet is a fully local Windows Forms application written in VB.NET for downloading, running, and comparing local large language models.<br />
<br />
Features<br />
Analyzes CPU, RAM, GPU, VRAM, instruction sets, and free disk space.<br />
Recommends compatible GGUF models for the current computer.<br />
Downloads models from Hugging Face with resume support.<br />
<br />
Installs and runs llama.cpp automatically.<br />
Supports CPU, Vulkan, and CUDA backends.<br />
<br />
Provides a local chat interface with streaming responses.<br />
Displays total response time, estimated input tokens, estimated output tokens, and output tokens per second.<br />
Supports PDF, image, Excel, Word, PowerPoint, CSV, JSON, XML, HTML, SQL, source code, and plain-text attachments.<br />
Extracts text locally from supported documents.<br />
Renders scanned PDF pages as images for compatible vision models.<br />
Detects already installed runtimes and models to avoid unnecessary downloads.<br />
Supports runtime discovery for llama.cpp, Ollama, LM Studio, vLLM, Jan, GPT4All, Docker Model Runner, and Apple MLX.<br />
Requirements<br />
Windows 10 or Windows 11, 64-bit.<br />
Visual Studio 2022 with the .NET desktop development workload.<br />
.NET 8 SDK.<br />
Internet access for restoring NuGet packages and downloading runtimes or models.<br />
Build<br />
Open LocalIAdotNet.sln, select Release and x64, then build the solution.<br />
<br />
You can also run:<br />
<br />
build.cmd<br />
To create a self-contained Windows x64 publication:<br />
<br />
publish-win-x64.cmd<br />
The published application is generated under the standard bin\Release\net8.0-windows...\win-x64\publish folder.<br />
<br />
First run<br />
Start LocalIAdotNet.<br />
Click Analyze PC.<br />
Review the automatically ranked model list.<br />
Install or select a runtime.<br />
Download a compatible model if required.<br />
Start the model.<br />
Open the Local chat tab and send a message.<br />
Downloaded content is stored under:<br />
<br />
%LOCALAPPDATA%\LocalIAdotNet<br />
Supported document formats<br />
Local text extraction<br />
PDF files containing a text layer.<br />
XLSX and XLSM workbooks.<br />
DOCX documents.<br />
PPTX presentations.<br />
TXT, CSV, MD, JSON, XML, HTML, SQL, VB, CS, PHP, and similar text-based files.<br />
Vision analysis<br />
With a compatible multimodal model, LocalIAdotNet can analyze:<br />
<br />
PNG, JPG, JPEG, BMP, GIF, TIFF, and WEBP images.<br />
Scanned PDFs or PDFs without an extractable text layer.<br />
By default, only the first pages of a scanned PDF are rendered to limit memory use and context size.<br />
<br />
Legacy XLS, DOC, and PPT files must first be saved in modern Office Open XML formats.<br />
<br />
Privacy<br />
After the initial runtime and model downloads:<br />
<br />
Inference runs on the local computer.<br />
Attached documents remain on the local computer.<br />
The embedded server listens only on 127.0.0.1.<br />
Documents are not uploaded to Hugging Face or GitHub.<br />
A Hugging Face token is used only when a repository requires authentication or license acceptance.<br />
The Hugging Face token is currently stored in the local settings.json file. For production distribution, consider protecting it with Windows DPAPI.<br />
<br />
Local API<br />
When a llama.cpp model is running, llama-server exposes an OpenAI-compatible endpoint:<br />
<br />
<a rel="nofollow" href="http://127.0.0.1:18456/v1/chat/completions" target="_blank" rel="nofollow">http://127.0.0.1:18456/v1/chat/completions</a><br />
The port can be changed in the Settings tab.<br />
<br />
Example request body:<br />
<br />
{<br />
  &quot;model&quot;: &quot;local-model&quot;,<br />
  &quot;messages&quot;: [<br />
    {<br />
      &quot;role&quot;: &quot;system&quot;,<br />
      &quot;content&quot;: &quot;You are a precise local assistant.&quot;<br />
    },<br />
    {<br />
      &quot;role&quot;: &quot;user&quot;,<br />
      &quot;content&quot;: &quot;Summarize this text.&quot;<br />
    }<br />
  ]<br />
}<br />
<br />
Acceleration<br />
The application recommends:<br />
CUDA for supported NVIDIA GPUs.<br />
Vulkan for other compatible GPUs.<br />
CPU when no suitable GPU backend is available.<br />
If a CUDA package is not available for a specific llama.cpp release, the installer can fall back to Vulkan or CPU.<br />
<br />
Limitations<br />
Hardware recommendations are estimates and should be validated with real benchmarks.<br />
WMI may report inaccurate VRAM values for some non-NVIDIA GPUs.<br />
Large documents are truncated to protect the context window.<br />
Password-protected documents cannot be read.<br />
Local models can produce incorrect information; important output should be reviewed.<br />
A built-in vector database and RAG knowledge base are not yet included in this version.<br />
<br />
Next step, attaching RAG</div>


	<div style="padding:10px">

	

	

	

	
		<fieldset class="fieldset">
			<legend>Attached Files</legend>
			<ul>
			<li>
	<img class="inlineimg" src="http://www.vbforums.com/images/attach/zip.gif" alt="File Type: zip" />
	<a href="https://www.vbforums.com/attachment.php?attachmentid=196262&amp;d=1783857069">LocalIA.zip</a> 
(53.5 KB)
</li>
			</ul>
		</fieldset>
	

	</div>
]]></content:encoded>
			<category domain="https://www.vbforums.com/forumdisplay.php?46-CodeBank-Visual-Basic-NET">CodeBank - Visual Basic .NET</category>
			<dc:creator>Thierry69</dc:creator>
			<guid isPermaLink="true">https://www.vbforums.com/showthread.php?912142-Project-to-run-IA-locally-in-VB-NET</guid>
		</item>
		<item>
			<title><![CDATA[The character "1" appears to be handled differently with the Print statement]]></title>
			<link>https://www.vbforums.com/showthread.php?912141-The-character-quot-1-quot-appears-to-be-handled-differently-with-the-Print-statement&amp;goto=newpost</link>
			<pubDate>Sun, 12 Jul 2026 07:09:01 GMT</pubDate>
			<description><![CDATA[Unlike any other character, including all the other decimal digit characters, is handled weirdly by the Print statement, in what appears to be a bug. If you have the code:

Code:
---------
Print "1"; "1"; "1"; "1"
Print "1111"
---------
Those two lines of code SHOULD produce identical outputs. However (at least with VB6's default Font for Form1, which is Arial) the result is that the Print statement with 4 concatenated "1" characters is used the digits are displayed as separated slightly more from each other, compared to when the single string "1111" is displayed via the Print statement. I've tried the other numbers, and even skinny letters like "l", but none of those produce this same discrepancy. So I'm guessing this is a bug.]]></description>
			<content:encoded><![CDATA[<div>Unlike any other character, including all the other decimal digit characters, is handled weirdly by the Print statement, in what appears to be a bug. If you have the code:<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code">Print &quot;1&quot;; &quot;1&quot;; &quot;1&quot;; &quot;1&quot;<br />
Print &quot;1111&quot;</code><hr />
</div>Those two lines of code SHOULD produce identical outputs. However (at least with VB6's default Font for Form1, which is Arial) the result is that the Print statement with 4 concatenated &quot;1&quot; characters is used the digits are displayed as separated slightly more from each other, compared to when the single string &quot;1111&quot; is displayed via the Print statement. I've tried the other numbers, and even skinny letters like &quot;l&quot;, but none of those produce this same discrepancy. So I'm guessing this is a bug.</div>

]]></content:encoded>
			<category domain="https://www.vbforums.com/forumdisplay.php?1-Visual-Basic-6-and-Earlier">Visual Basic 6 and Earlier</category>
			<dc:creator>Ben321</dc:creator>
			<guid isPermaLink="true">https://www.vbforums.com/showthread.php?912141-The-character-quot-1-quot-appears-to-be-handled-differently-with-the-Print-statement</guid>
		</item>
		<item>
			<title><![CDATA[[VB6] FlexGrid to XLSX (and CSV/PDF) Exporter — no Excel installation required]]></title>
			<link>https://www.vbforums.com/showthread.php?912140-VB6-FlexGrid-to-XLSX-(and-CSV-PDF)-Exporter-—-no-Excel-installation-required&amp;goto=newpost</link>
			<pubDate>Sat, 11 Jul 2026 22:13:00 GMT</pubDate>
			<description><![CDATA[Download from GitHub (https://github.com/EduardoVB/FlexGrid-Exporter).

This code was made mainly by Claude Sonnet v4.6 and v5.0, but also with some collaboration from Gemini, ChatGPT, DeepSeek and off course from me.
It exports any FlexGrid-family control directly to a real .xlsx file**, without going through Excel automation and without any third-party XLSX library. It writes the OOXML (zip + XML) format directly.
For the zip compression it uses wqweto's cZipArchive.cls class (https://github.com/wqweto/ZipArchive/).
Optionally, it can also output PDF files. For that feature to work, it needs BSPrinter ocx accessible for the project (whether registered or through SxS). When it is available the user will see the PDF option in th save dialog.

*Supported grids*


*     MSFlexGrid
*     MSHFlexGrid
*     VSFlexGrid
*     VBFlexGrid
*     (should work with any other API-compatible FlexGrid variant — it only relies on the standard TextMatrix/CellFontAttributes-style properties that all of these share)


*What gets exported to XLSX*


*     Cell values with correct types (text, numbers, dates/times using Excel's native date system)
*     Fonts, colors, bold/italic/underline, per-cell alignment (including vertical)
*     Cell borders (from the grid's own GridLines/GridLinesFixed settings)
*     WrapText (from the grid's WordWrap property or embedded line breaks)
*     Row heights / column widths matched from the grid
*     Frozen panes (matching the grid's fixed rows/columns), optional.
*     AutoFilter, optional.
*     Merged cells — detected from the grid's own MergeCells/MergeRow/MergeCol state,


including simultaneous row+column merging
    Embedded pictures (CellPicture), with correct anchoring for every CellPictureAlignment value (Stretch, and all 9 combinations of Left/Center/Right × Top/Center/Bottom), so images resize/reposition correctly if the user later resizes rows or columns in Excel

*Optional extras*


*     CSV export, with proper UTF-8 + BOM handling and locale-aware separators
*     PDF export, but only if the optional BSPrinter30.ocx (BSPrinter component) is registered on the machine — the exporter detects this at runtime and only offers the PDF option if it's available. No PDF dependency is required otherwise.


*Under the hood*


*     No dependency on Microsoft Excel being installed — it writes the .xlsx zip/XML structure directly.
*     No typelib required.
*     Pure VB6, no ActiveX Data Objects required for the export itself.



Actual grid:

Attachment 196259 (https://www.vbforums.com/attachment.php?attachmentid=196259)


Excel export:

Attachment 196260 (https://www.vbforums.com/attachment.php?attachmentid=196260)


PDF export:

Attachment 196261 (https://www.vbforums.com/attachment.php?attachmentid=196261)

Download from GitHub (https://github.com/EduardoVB/FlexGrid-Exporter).]]></description>
			<content:encoded><![CDATA[<div><a rel="nofollow" href="https://github.com/EduardoVB/FlexGrid-Exporter" target="_blank" rel="nofollow">Download from GitHub</a>.<br />
<br />
This code was made mainly by Claude Sonnet v4.6 and v5.0, but also with some collaboration from Gemini, ChatGPT, DeepSeek and off course from me.<br />
It exports any FlexGrid-family control directly to a real .xlsx file**, without going through Excel automation and without any third-party XLSX library. It writes the OOXML (zip + XML) format directly.<br />
For the zip compression it uses <a rel="nofollow" href="https://github.com/wqweto/ZipArchive/" target="_blank" rel="nofollow">wqweto's cZipArchive.cls class</a>.<br />
Optionally, it can also output PDF files. For that feature to work, it needs BSPrinter ocx accessible for the project (whether registered or through SxS). When it is available the user will see the PDF option in th save dialog.<br />
<br />
<b>Supported grids</b><br />
<br />
<ul><li style="">    MSFlexGrid</li><li style="">    MSHFlexGrid</li><li style="">    VSFlexGrid</li><li style="">    VBFlexGrid</li><li style="">    (should work with any other API-compatible FlexGrid variant — it only relies on the standard TextMatrix/CellFontAttributes-style properties that all of these share)</li></ul><br />
<b>What gets exported to XLSX</b><br />
<br />
<ul><li style="">    Cell values with correct types (text, numbers, dates/times using Excel's native date system)</li><li style="">    Fonts, colors, bold/italic/underline, per-cell alignment (including vertical)</li><li style="">    Cell borders (from the grid's own GridLines/GridLinesFixed settings)</li><li style="">    WrapText (from the grid's WordWrap property or embedded line breaks)</li><li style="">    Row heights / column widths matched from the grid</li><li style="">    Frozen panes (matching the grid's fixed rows/columns), optional.</li><li style="">    AutoFilter, optional.</li><li style="">    Merged cells — detected from the grid's own MergeCells/MergeRow/MergeCol state, </li></ul><br />
including simultaneous row+column merging<br />
    Embedded pictures (CellPicture), with correct anchoring for every CellPictureAlignment value (Stretch, and all 9 combinations of Left/Center/Right × Top/Center/Bottom), so images resize/reposition correctly if the user later resizes rows or columns in Excel<br />
<br />
<b>Optional extras</b><br />
<br />
<ul><li style="">    CSV export, with proper UTF-8 + BOM handling and locale-aware separators</li><li style="">    PDF export, but only if the optional BSPrinter30.ocx (BSPrinter component) is registered on the machine — the exporter detects this at runtime and only offers the PDF option if it's available. No PDF dependency is required otherwise.</li></ul><br />
<b>Under the hood</b><br />
<br />
<ul><li style="">    No dependency on Microsoft Excel being installed — it writes the .xlsx zip/XML structure directly.</li><li style="">    No typelib required.</li><li style="">    Pure VB6, no ActiveX Data Objects required for the export itself.</li></ul><br />
<br />
Actual grid:<br />
<br />
<img src="https://www.vbforums.com/attachment.php?attachmentid=196259&amp;d=1783807776" border="0" alt="Name:  Original-Flex-Grid.jpg
Views: 122
Size:  56.7 KB"  style="float: CONFIG" /><br />
<br />
<br />
Excel export:<br />
<br />
<img src="https://www.vbforums.com/attachment.php?attachmentid=196260&amp;d=1783807848" border="0" alt="Name:  Excel-export.jpg
Views: 98
Size:  44.2 KB"  style="float: CONFIG" /><br />
<br />
<br />
PDF export:<br />
<br />
<img src="https://www.vbforums.com/attachment.php?attachmentid=196261&amp;d=1783807906" border="0" alt="Name:  PDF-Export.jpg
Views: 94
Size:  28.7 KB"  style="float: CONFIG" /><br />
<br />
<a rel="nofollow" href="https://github.com/EduardoVB/FlexGrid-Exporter" target="_blank" rel="nofollow">Download from GitHub</a>.</div>


	<div style="padding:10px">

	

	
		<fieldset class="fieldset">
			<legend>Attached Images</legend>
				<div style="padding:10px">
				<img class="attach" src="https://www.vbforums.com/attachment.php?attachmentid=196259&amp;stc=1&amp;d=1783807776" alt="" />&nbsp;<img class="attach" src="https://www.vbforums.com/attachment.php?attachmentid=196260&amp;stc=1&amp;d=1783807848" alt="" />&nbsp;<img class="attach" src="https://www.vbforums.com/attachment.php?attachmentid=196261&amp;stc=1&amp;d=1783807906" alt="" />&nbsp;
			</div>
		</fieldset>
	

	

	

	</div>
]]></content:encoded>
			<category domain="https://www.vbforums.com/forumdisplay.php?43-CodeBank-Visual-Basic-6-and-earlier">CodeBank - Visual Basic 6 and earlier</category>
			<dc:creator>Eduardo-</dc:creator>
			<guid isPermaLink="true">https://www.vbforums.com/showthread.php?912140-VB6-FlexGrid-to-XLSX-(and-CSV-PDF)-Exporter-—-no-Excel-installation-required</guid>
		</item>
		<item>
			<title><![CDATA[[VB6] czWebview — Full-Featured WebView2 UserControl (No OCX, No Registration)]]></title>
			<link>https://www.vbforums.com/showthread.php?912139-VB6-czWebview-—-Full-Featured-WebView2-UserControl-(No-OCX-No-Registration)&amp;goto=newpost</link>
			<pubDate>Sat, 11 Jul 2026 09:06:55 GMT</pubDate>
			<description><![CDATA[*czWebview — Full-Featured WebView2 UserControl for VB6*

Embed modern web content (HTML5, CSS3, ES6+) in your VB6 applications using the Microsoft Edge WebView2 Runtime. Zero external dependencies beyond a single DLL, no OCX registration required — just add the source files to your project and go.

GitHub Repository (https://github.com/cyberzilla/czWebview)  •  MIT License

*Why another WebView2 control?*

Existing solutions for embedding a modern browser in VB6 are either commercial, require OCX registration, or don't expose enough of the WebView2 API. czWebview takes a different approach:


*  *Pure source-code embed* — just add one .ctl, one .cls, and one .tlb to your project. No registration, no installer headaches.
*  *Complete API surface* — 44 callback interfaces, 29 events, 34 public methods, and 48 properties. This matches (and is inspired by) wqweto's excellent cWebView2 class.
*  *Synchronous & Asynchronous* — Execute JavaScript and get results synchronously via a message pump, or go fully async with event-based callbacks.
*  *Bidirectional JavaScript Bridge* — PostWebMessage / chrome.webview.postMessage for clean VB6 ? JS communication.
*  *Host Objects* — Expose your VB6 COM objects directly to JavaScript.



*Feature Highlights*


*  *Navigation* — Navigate, GoBack, GoForward, Reload, Stop, NavigateToString (render HTML directly), synchronous NavigateSync
*  *JavaScript Execution* — ExecuteScript (sync with JSON result), ExecuteScriptAsync, AddScriptToExecuteOnDocumentCreated
*  *Print & Capture* — PrintToPdf, ShowPrintUI (browser or system dialog), CapturePreview (screenshot as PNG/JPG byte array)
*  *Cookie Management* — GetCookies, AddOrUpdateCookie, DeleteCookies, DeleteAllCookies
*  *Downloads* — DownloadStarting event with custom file path support
*  *DevTools Protocol* — CallDevToolsProtocolMethod for direct CDP calls (device emulation, network throttling, etc.)
*  *Resource Filtering* — AddWebResourceRequestedFilter + WebResourceRequested event for ad-blocking, request interception, etc.
*  *Virtual Host Mapping* — Serve local files via SetVirtualHostNameToFolderMapping (e.g., map "app.local" ? App.Path & "\www")
*  *Authentication* — BasicAuthenticationRequested event
*  *Permissions* — PermissionRequested event (camera, mic, geolocation, etc.)
*  *Script Dialogs* — ScriptDialogOpening event (intercept alert/confirm/prompt)
*  *Memory Management* — TrySuspend / ResumeFromSuspend for background tabs
*  *Browsing Data* — ClearBrowsingData (cache, cookies, history, passwords, and more)
*  *UI Control* — Mute/unmute audio, zoom control, user agent customization, status bar, full-screen detection, context menu events



*Requirements*


*  VB6 IDE (SP6 recommended)
*  WebView2 Runtime — pre-installed on Windows 10 (1803+) and Windows 11
*  WebView2Loader.dll — included in the repository (~115 KB, x86)
*  czWebview.tlb — pre-compiled and included, or rebuild with the included compile_tlb.bat (requires Windows SDK / MIDL)



*Quick Start*

*1. Add to your project:*

Code:
---------
Project ? Add User Control ? Existing ? select src\czWebview.ctl
Project ? Add Class Module ? Existing ? select src\czWebviewCallback.cls
Project ? References ? Browse ? select typelib\czWebview.tlb
Place WebView2Loader.dll next to your .exe (or in App.Path)
---------
*2. Handle events:*
[CODE=vb6]
Private Sub czWebview1_InitComplete(ByVal Success As Boolean, ByVal ErrorCode As Long)
    If Success Then
        czWebview1.Navigate "https://www.google.com"
    Else
        MsgBox "WebView2 init failed: &H" & Hex$(ErrorCode), vbCritical
    End If
End Sub

Private Sub czWebview1_TitleChanged(ByVal Title As String)
    Me.Caption = Title
End Sub

Private Sub czWebview1_NavigationCompleted(ByVal IsSuccess As Boolean, ByVal WebErrorStatus As Long)
    lblStatus.Caption = IIf(IsSuccess, "Done", "Error: " & WebErrorStatus)
End Sub

Private Sub czWebview1_WebMessageReceived(ByVal Message As String, ByVal IsJSON As Boolean)
    Debug.Print "From JS: " & Message
End Sub
[/CODE]

*3. JavaScript Bridge:*
[CODE=vb6]
' VB6 ? JavaScript
Dim result As String
result = czWebview1.ExecuteScript("document.title")
' result = """My Page Title"""

' Send message to page
czWebview1.PostWebMessageAsString "Hello from VB6!"
czWebview1.PostWebMessageAsJSON "{""action"":""update"",""value"":42}"
[/CODE]

[CODE=javascript]
// JavaScript ? VB6
chrome.webview.postMessage("Hello from JavaScript!");

// Listen for messages from VB6
chrome.webview.addEventListener('message', function(e) {
    console.log('From VB6:', e.data);
});
[/CODE]

*More Examples*

*Screenshot to file:*
[CODE=vb6]
Dim baPng() As Byte
baPng = czWebview1.CapturePreview(czCaptureAs_PNG)
Open "screenshot.png" For Binary As #1
Put #1, , baPng
Close #1
[/CODE]

*Save page as PDF:*
[CODE=vb6]
If czWebview1.PrintToPdf("C:\output\page.pdf") Then
    MsgBox "PDF saved!"
End If
[/CODE]

*Cookie management:*
[CODE=vb6]
' Add a cookie
czWebview1.AddOrUpdateCookie "session", "abc123", ".example.com", "/", , True, True

' Get all cookies for a URL
Dim cCookies As Collection
Set cCookies = czWebview1.GetCookies("https://example.com")
Dim cItem As Collection
For Each cItem In cCookies
    Debug.Print cItem("Name") & " = " & cItem("Value")
Next

' Clear all cookies
czWebview1.DeleteAllCookies
[/CODE]

*Block specific URLs (ad-blocking, etc.):*
[CODE=vb6]
Private Sub Form_Load()
    czWebview1.AddWebResourceRequestedFilter "*.ads.example.com/*"
End Sub

Private Sub czWebview1_WebResourceRequested(ByVal URI As String, _
    ByVal ResourceContext As czWebView2ResourceFilter, _
    Permit As czWebView2PermissionState)
    Permit = czPERMISSION_STATE_DENY
End Sub
[/CODE]

*Serve local files via virtual hostname:*
[CODE=vb6]
czWebview1.SetVirtualHostNameToFolderMapping "app.local", App.Path & "\www", czHostResourceAccess_ALLOW
czWebview1.Navigate "https://app.local/index.html"
[/CODE]

*DevTools Protocol — Emulate mobile device:*
[CODE=vb6]
Dim sResult As String
sResult = czWebview1.CallDevToolsProtocolMethod("Emulation.setDeviceMetricsOverride", _
    "{""width"":375,""height"":812,""deviceScaleFactor"":3,""mobile"":true}")
[/CODE]

*Project Structure*


Code:
---------
czWebview/
??? src/
?   ??? czWebview.ctl               ' Main UserControl — public API
?   ??? czWebviewCallback.cls       ' Internal callback handler (44 interfaces)
??? typelib/
?   ??? czWebview.odl               ' Interface definitions (ODL source)
?   ??? czWebview.tlb               ' Compiled type library
?   ??? compile_tlb.bat             ' Auto-compile script (uses MIDL)
??? External/
?   ??? WebView2Loader.dll          ' Microsoft x86 loader (~115 KB)
??? demo/
?   ??? SimpleTest/                 ' Simple browser demo
?   ??? WhatsappBot/                ' WhatsApp Web bot demo
??? README.md
---------
*Included Demos*


1.  *SimpleTest* — A minimal browser with navigation (back, forward, reload, address bar). Good starting point to see how the control works.
2.  *WhatsappBot* — A practical demo showing WhatsApp Web automation via JavaScript bridge. Demonstrates real-world usage of ExecuteScript, WebMessageReceived, and DOM interaction.



*Architecture Notes*

The control is split into two files for clean separation of concerns:


*  *czWebview.ctl* (~1,650 lines) — The public-facing UserControl. Contains all properties, methods, events, and the synchronous message pump (SpinThreadMessagePump) that enables blocking calls while still allowing COM callbacks to arrive.
*  *czWebviewCallback.cls* — Implements all 44 COM callback interfaces required by the WebView2 API. Events are forwarded to the UserControl via Friend subs.



This design keeps the callback plumbing out of your face — you only interact with the clean .ctl API surface.

*Credits*


*  Interface patterns inspired by cWebView2 (https://github.com/wqweto/cWebView2) by wqweto
*  WebView2 Runtime by Microsoft



*License*

MIT — use it, modify it, ship it. No restrictions.

Source code and full documentation on GitHub: https://github.com/cyberzilla/czWebview

Feedback, bug reports, and contributions are welcome! :cool:]]></description>
			<content:encoded><![CDATA[<div><b><font size="4">czWebview — Full-Featured WebView2 UserControl for VB6</font></b><br />
<br />
Embed modern web content (HTML5, CSS3, ES6+) in your VB6 applications using the Microsoft Edge WebView2 Runtime. Zero external dependencies beyond a single DLL, no OCX registration required — just add the source files to your project and go.<br />
<br />
<a rel="nofollow" href="https://github.com/cyberzilla/czWebview" target="_blank" rel="nofollow">GitHub Repository</a>  •  MIT License<br />
<br />
<b><font size="3">Why another WebView2 control?</font></b><br />
<br />
Existing solutions for embedding a modern browser in VB6 are either commercial, require OCX registration, or don't expose enough of the WebView2 API. czWebview takes a different approach:<br />
<br />
<ul><li style=""> <b>Pure source-code embed</b> — just add one .ctl, one .cls, and one .tlb to your project. No registration, no installer headaches.</li><li style=""> <b>Complete API surface</b> — 44 callback interfaces, 29 events, 34 public methods, and 48 properties. This matches (and is inspired by) wqweto's excellent cWebView2 class.</li><li style=""> <b>Synchronous &amp; Asynchronous</b> — Execute JavaScript and get results synchronously via a message pump, or go fully async with event-based callbacks.</li><li style=""> <b>Bidirectional JavaScript Bridge</b> — PostWebMessage / chrome.webview.postMessage for clean VB6 ? JS communication.</li><li style=""> <b>Host Objects</b> — Expose your VB6 COM objects directly to JavaScript.</li></ul><br />
<br />
<b><font size="3">Feature Highlights</font></b><br />
<br />
<ul><li style=""> <b>Navigation</b> — Navigate, GoBack, GoForward, Reload, Stop, NavigateToString (render HTML directly), synchronous NavigateSync</li><li style=""> <b>JavaScript Execution</b> — ExecuteScript (sync with JSON result), ExecuteScriptAsync, AddScriptToExecuteOnDocumentCreated</li><li style=""> <b>Print &amp; Capture</b> — PrintToPdf, ShowPrintUI (browser or system dialog), CapturePreview (screenshot as PNG/JPG byte array)</li><li style=""> <b>Cookie Management</b> — GetCookies, AddOrUpdateCookie, DeleteCookies, DeleteAllCookies</li><li style=""> <b>Downloads</b> — DownloadStarting event with custom file path support</li><li style=""> <b>DevTools Protocol</b> — CallDevToolsProtocolMethod for direct CDP calls (device emulation, network throttling, etc.)</li><li style=""> <b>Resource Filtering</b> — AddWebResourceRequestedFilter + WebResourceRequested event for ad-blocking, request interception, etc.</li><li style=""> <b>Virtual Host Mapping</b> — Serve local files via SetVirtualHostNameToFolderMapping (e.g., map &quot;app.local&quot; ? App.Path &amp; &quot;\www&quot;)</li><li style=""> <b>Authentication</b> — BasicAuthenticationRequested event</li><li style=""> <b>Permissions</b> — PermissionRequested event (camera, mic, geolocation, etc.)</li><li style=""> <b>Script Dialogs</b> — ScriptDialogOpening event (intercept alert/confirm/prompt)</li><li style=""> <b>Memory Management</b> — TrySuspend / ResumeFromSuspend for background tabs</li><li style=""> <b>Browsing Data</b> — ClearBrowsingData (cache, cookies, history, passwords, and more)</li><li style=""> <b>UI Control</b> — Mute/unmute audio, zoom control, user agent customization, status bar, full-screen detection, context menu events</li></ul><br />
<br />
<b><font size="3">Requirements</font></b><br />
<br />
<ul><li style=""> VB6 IDE (SP6 recommended)</li><li style=""> WebView2 Runtime — pre-installed on Windows 10 (1803+) and Windows 11</li><li style=""> WebView2Loader.dll — included in the repository (~115 KB, x86)</li><li style=""> czWebview.tlb — pre-compiled and included, or rebuild with the included compile_tlb.bat (requires Windows SDK / MIDL)</li></ul><br />
<br />
<b><font size="3">Quick Start</font></b><br />
<br />
<b>1. Add to your project:</b><br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code">Project ? Add User Control ? Existing ? select src\czWebview.ctl<br />
Project ? Add Class Module ? Existing ? select src\czWebviewCallback.cls<br />
Project ? References ? Browse ? select typelib\czWebview.tlb<br />
Place WebView2Loader.dll next to your .exe (or in App.Path)</code><hr />
</div><b>2. Handle events:</b><br />
[CODE=vb6]<br />
Private Sub czWebview1_InitComplete(ByVal Success As Boolean, ByVal ErrorCode As Long)<br />
    If Success Then<br />
        czWebview1.Navigate &quot;https://www.google.com&quot;<br />
    Else<br />
        MsgBox &quot;WebView2 init failed: &amp;H&quot; &amp; Hex$(ErrorCode), vbCritical<br />
    End If<br />
End Sub<br />
<br />
Private Sub czWebview1_TitleChanged(ByVal Title As String)<br />
    Me.Caption = Title<br />
End Sub<br />
<br />
Private Sub czWebview1_NavigationCompleted(ByVal IsSuccess As Boolean, ByVal WebErrorStatus As Long)<br />
    lblStatus.Caption = IIf(IsSuccess, &quot;Done&quot;, &quot;Error: &quot; &amp; WebErrorStatus)<br />
End Sub<br />
<br />
Private Sub czWebview1_WebMessageReceived(ByVal Message As String, ByVal IsJSON As Boolean)<br />
    Debug.Print &quot;From JS: &quot; &amp; Message<br />
End Sub<br />
[/CODE]<br />
<br />
<b>3. JavaScript Bridge:</b><br />
[CODE=vb6]<br />
' VB6 ? JavaScript<br />
Dim result As String<br />
result = czWebview1.ExecuteScript(&quot;document.title&quot;)<br />
' result = &quot;&quot;&quot;My Page Title&quot;&quot;&quot;<br />
<br />
' Send message to page<br />
czWebview1.PostWebMessageAsString &quot;Hello from VB6!&quot;<br />
czWebview1.PostWebMessageAsJSON &quot;{&quot;&quot;action&quot;&quot;:&quot;&quot;update&quot;&quot;,&quot;&quot;value&quot;&quot;:42}&quot;<br />
[/CODE]<br />
<br />
[CODE=javascript]<br />
// JavaScript ? VB6<br />
chrome.webview.postMessage(&quot;Hello from JavaScript!&quot;);<br />
<br />
// Listen for messages from VB6<br />
chrome.webview.addEventListener('message', function(e) {<br />
    console.log('From VB6:', e.data);<br />
});<br />
[/CODE]<br />
<br />
<b><font size="3">More Examples</font></b><br />
<br />
<b>Screenshot to file:</b><br />
[CODE=vb6]<br />
Dim baPng() As Byte<br />
baPng = czWebview1.CapturePreview(czCaptureAs_PNG)<br />
Open &quot;screenshot.png&quot; For Binary As #1<br />
Put #1, , baPng<br />
Close #1<br />
[/CODE]<br />
<br />
<b>Save page as PDF:</b><br />
[CODE=vb6]<br />
If czWebview1.PrintToPdf(&quot;C:\output\page.pdf&quot;) Then<br />
    MsgBox &quot;PDF saved!&quot;<br />
End If<br />
[/CODE]<br />
<br />
<b>Cookie management:</b><br />
[CODE=vb6]<br />
' Add a cookie<br />
czWebview1.AddOrUpdateCookie &quot;session&quot;, &quot;abc123&quot;, &quot;.example.com&quot;, &quot;/&quot;, , True, True<br />
<br />
' Get all cookies for a URL<br />
Dim cCookies As Collection<br />
Set cCookies = czWebview1.GetCookies(&quot;https://example.com&quot;)<br />
Dim cItem As Collection<br />
For Each cItem In cCookies<br />
    Debug.Print cItem(&quot;Name&quot;) &amp; &quot; = &quot; &amp; cItem(&quot;Value&quot;)<br />
Next<br />
<br />
' Clear all cookies<br />
czWebview1.DeleteAllCookies<br />
[/CODE]<br />
<br />
<b>Block specific URLs (ad-blocking, etc.):</b><br />
[CODE=vb6]<br />
Private Sub Form_Load()<br />
    czWebview1.AddWebResourceRequestedFilter &quot;*.ads.example.com/*&quot;<br />
End Sub<br />
<br />
Private Sub czWebview1_WebResourceRequested(ByVal URI As String, _<br />
    ByVal ResourceContext As czWebView2ResourceFilter, _<br />
    Permit As czWebView2PermissionState)<br />
    Permit = czPERMISSION_STATE_DENY<br />
End Sub<br />
[/CODE]<br />
<br />
<b>Serve local files via virtual hostname:</b><br />
[CODE=vb6]<br />
czWebview1.SetVirtualHostNameToFolderMapping &quot;app.local&quot;, App.Path &amp; &quot;\www&quot;, czHostResourceAccess_ALLOW<br />
czWebview1.Navigate &quot;https://app.local/index.html&quot;<br />
[/CODE]<br />
<br />
<b>DevTools Protocol — Emulate mobile device:</b><br />
[CODE=vb6]<br />
Dim sResult As String<br />
sResult = czWebview1.CallDevToolsProtocolMethod(&quot;Emulation.setDeviceMetricsOverride&quot;, _<br />
    &quot;{&quot;&quot;width&quot;&quot;:375,&quot;&quot;height&quot;&quot;:812,&quot;&quot;deviceScaleFactor&quot;&quot;:3,&quot;&quot;mobile&quot;&quot;:true}&quot;)<br />
[/CODE]<br />
<br />
<b><font size="3">Project Structure</font></b><br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code">czWebview/<br />
??? src/<br />
?&nbsp;  ??? czWebview.ctl&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  ' Main UserControl — public API<br />
?&nbsp;  ??? czWebviewCallback.cls&nbsp; &nbsp; &nbsp;  ' Internal callback handler (44 interfaces)<br />
??? typelib/<br />
?&nbsp;  ??? czWebview.odl&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  ' Interface definitions (ODL source)<br />
?&nbsp;  ??? czWebview.tlb&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  ' Compiled type library<br />
?&nbsp;  ??? compile_tlb.bat&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  ' Auto-compile script (uses MIDL)<br />
??? External/<br />
?&nbsp;  ??? WebView2Loader.dll&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ' Microsoft x86 loader (~115 KB)<br />
??? demo/<br />
?&nbsp;  ??? SimpleTest/&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  ' Simple browser demo<br />
?&nbsp;  ??? WhatsappBot/&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ' WhatsApp Web bot demo<br />
??? README.md</code><hr />
</div><b><font size="3">Included Demos</font></b><br />
<br />
<ol class="decimal"><li style=""> <b>SimpleTest</b> — A minimal browser with navigation (back, forward, reload, address bar). Good starting point to see how the control works.</li><li style=""> <b>WhatsappBot</b> — A practical demo showing WhatsApp Web automation via JavaScript bridge. Demonstrates real-world usage of ExecuteScript, WebMessageReceived, and DOM interaction.</li></ol><br />
<br />
<b><font size="3">Architecture Notes</font></b><br />
<br />
The control is split into two files for clean separation of concerns:<br />
<br />
<ul><li style=""> <b>czWebview.ctl</b> (~1,650 lines) — The public-facing UserControl. Contains all properties, methods, events, and the synchronous message pump (SpinThreadMessagePump) that enables blocking calls while still allowing COM callbacks to arrive.</li><li style=""> <b>czWebviewCallback.cls</b> — Implements all 44 COM callback interfaces required by the WebView2 API. Events are forwarded to the UserControl via Friend subs.</li></ul><br />
<br />
This design keeps the callback plumbing out of your face — you only interact with the clean .ctl API surface.<br />
<br />
<b><font size="3">Credits</font></b><br />
<br />
<ul><li style=""> Interface patterns inspired by <a rel="nofollow" href="https://github.com/wqweto/cWebView2" target="_blank" rel="nofollow">cWebView2</a> by wqweto</li><li style=""> WebView2 Runtime by Microsoft</li></ul><br />
<br />
<b><font size="3">License</font></b><br />
<br />
MIT — use it, modify it, ship it. No restrictions.<br />
<br />
Source code and full documentation on GitHub: <a rel="nofollow" href="https://github.com/cyberzilla/czWebview" target="_blank" rel="nofollow">https://github.com/cyberzilla/czWebview</a><br />
<br />
Feedback, bug reports, and contributions are welcome! :cool:</div>

]]></content:encoded>
			<category domain="https://www.vbforums.com/forumdisplay.php?43-CodeBank-Visual-Basic-6-and-earlier">CodeBank - Visual Basic 6 and earlier</category>
			<dc:creator>cyberzilla</dc:creator>
			<guid isPermaLink="true">https://www.vbforums.com/showthread.php?912139-VB6-czWebview-—-Full-Featured-WebView2-UserControl-(No-OCX-No-Registration)</guid>
		</item>
		<item>
			<title>VB6 on Windows11</title>
			<link>https://www.vbforums.com/showthread.php?912138-VB6-on-Windows11&amp;goto=newpost</link>
			<pubDate>Fri, 10 Jul 2026 19:40:19 GMT</pubDate>
			<description><![CDATA[HAD to update work computer OS from Win10 to Win11.

While everything seems to work ok with existing programs and IDE,
one thing I can see is wrong is:
when I place a new control on a form, I can see on my blank laptop monitor the 
"outlines" of these controls moving.
(my setup is laptop with 2 additional monitors)

Can this moving "artifact" be eliminated somehow?


btw: I really don't like Windows11]]></description>
			<content:encoded><![CDATA[<div>HAD to update work computer OS from Win10 to Win11.<br />
<br />
While everything seems to work ok with existing programs and IDE,<br />
one thing I can see is wrong is:<br />
when I place a new control on a form, I can see on my blank laptop monitor the <br />
&quot;outlines&quot; of these controls moving.<br />
(my setup is laptop with 2 additional monitors)<br />
<br />
Can this moving &quot;artifact&quot; be eliminated somehow?<br />
<br />
<br />
btw: I really don't like Windows11</div>

]]></content:encoded>
			<category domain="https://www.vbforums.com/forumdisplay.php?1-Visual-Basic-6-and-Earlier">Visual Basic 6 and Earlier</category>
			<dc:creator>mms_</dc:creator>
			<guid isPermaLink="true">https://www.vbforums.com/showthread.php?912138-VB6-on-Windows11</guid>
		</item>
		<item>
			<title>delete all dir and file but not the dir CSV</title>
			<link>https://www.vbforums.com/showthread.php?912137-delete-all-dir-and-file-but-not-the-dir-CSV&amp;goto=newpost</link>
			<pubDate>Fri, 10 Jul 2026 16:20:14 GMT</pubDate>
			<description>The path is:

C:\Lavori_Vb6\GARDA_INF\CSV\

how to?</description>
			<content:encoded><![CDATA[<div>The path is:<br />
<br />
C:\Lavori_Vb6\GARDA_INF\CSV\<br />
<br />
how to?</div>


	<div style="padding:10px">

	

	
		<fieldset class="fieldset">
			<legend>Attached Images</legend>
				<div style="padding:10px">
				<img class="attach" src="https://www.vbforums.com/attachment.php?attachmentid=196253&amp;stc=1&amp;d=1783700449" alt="" />&nbsp;
			</div>
		</fieldset>
	

	

	

	</div>
]]></content:encoded>
			<category domain="https://www.vbforums.com/forumdisplay.php?1-Visual-Basic-6-and-Earlier">Visual Basic 6 and Earlier</category>
			<dc:creator>luca90</dc:creator>
			<guid isPermaLink="true">https://www.vbforums.com/showthread.php?912137-delete-all-dir-and-file-but-not-the-dir-CSV</guid>
		</item>
		<item>
			<title>Extract date from string</title>
			<link>https://www.vbforums.com/showthread.php?912135-Extract-date-from-string&amp;goto=newpost</link>
			<pubDate>Fri, 10 Jul 2026 09:56:07 GMT</pubDate>
			<description><![CDATA[I just have myvar="gi_db_comuni-2026-07-10-b893f.zip"

how to get date?

note: 
before and after the date are lenght variable]]></description>
			<content:encoded><![CDATA[<div>I just have myvar=&quot;gi_db_comuni-2026-07-10-b893f.zip&quot;<br />
<br />
how to get date?<br />
<br />
note: <br />
before and after the date are lenght variable</div>

]]></content:encoded>
			<category domain="https://www.vbforums.com/forumdisplay.php?1-Visual-Basic-6-and-Earlier">Visual Basic 6 and Earlier</category>
			<dc:creator>luca90</dc:creator>
			<guid isPermaLink="true">https://www.vbforums.com/showthread.php?912135-Extract-date-from-string</guid>
		</item>
		<item>
			<title>Important news for twinBASIC</title>
			<link>https://www.vbforums.com/showthread.php?912132-Important-news-for-twinBASIC&amp;goto=newpost</link>
			<pubDate>Wed, 08 Jul 2026 16:08:30 GMT</pubDate>
			<description><![CDATA[Big news for twinBASIC! 
    TWINBASIC Ltd. has secured strategic investment to accelerate development and expand the team...


*TWINBASIC LTD Secures Strategic Investment to Advance the Future of BASIC*

Published 7th July 2026

TWINBASIC LTD today announced the successful completion of its first external investment round, securing strategic funding to accelerate development of the twinBASIC platform, expand the engineering team, and support the company's long-term vision... read more (https://twinbasic.com/news/twinbasic-investment-july2026)



]]></description>
			<content:encoded><![CDATA[<div><i>Big news for twinBASIC! <br />
    TWINBASIC Ltd. has secured strategic investment to accelerate development and expand the team...<br />
</i><br />
<br />
<span style="font-family: arial"><font size="3"><b>TWINBASIC LTD Secures Strategic Investment to Advance the Future of BASIC</b><br />
<br />
</font><font size="1"><font size="2">Published 7th July 2026</font><br />
</font><font size="3"><br />
TWINBASIC LTD today announced the successful completion of its first external investment round, securing strategic funding to accelerate development of the twinBASIC platform, expand the engineering team, and support the company's long-term vision... <a rel="nofollow" href="https://twinbasic.com/news/twinbasic-investment-july2026" target="_blank" rel="nofollow">read more</a><br />
<br />
<br />
<br />
</font></span></div>

]]></content:encoded>
			<category domain="https://www.vbforums.com/forumdisplay.php?108-TwinBASIC">TwinBASIC</category>
			<dc:creator>VB6 Programming</dc:creator>
			<guid isPermaLink="true">https://www.vbforums.com/showthread.php?912132-Important-news-for-twinBASIC</guid>
		</item>
		<item>
			<title>HOW to decode this string in ascii code</title>
			<link>https://www.vbforums.com/showthread.php?912131-HOW-to-decode-this-string-in-ascii-code&amp;goto=newpost</link>
			<pubDate>Wed, 08 Jul 2026 08:27:36 GMT</pubDate>
			<description><![CDATA[i just have decoded only:

\u00E8="è"

...
\u00E8
\u00E0
\u0027A
\u0027O
\u00F9
\u00E9r
\u00E8r
\u00E9
\u00C8t
\u00F4n
\u00E7a
\u00E9 
\u00EAm
\u00E9m
\u00E8s
\u0027 
\u00F2
\u00EC
\u00E8y
\u0027E
\u0027I
\u00F9 
\u00E0 
...

in other  case i use this code to return value:

...
URL = "https://situas-servizi.istat.it/publish/reportspooljson?pfun=51&pdata=17/03/1861"
    
    Set xmlhttp = CreateObject("MSXML2.XMLHTTP")
    xmlhttp.Open "GET", URL, False
    xmlhttp.send
    
    STRINGA= xmlhttp.responseText

    Dim F As Integer
    F = FreeFile
    Open "C:\TABULATI\ISTAT_COMUNI.txt" For Output As #F
    Print #F, STRINGA
    Close #F
    
...

For AN idea see the First comune Is Agliè... In txt file]]></description>
			<content:encoded><![CDATA[<div>i just have decoded only:<br />
<br />
\u00E8=&quot;è&quot;<br />
<br />
...<br />
\u00E8<br />
\u00E0<br />
\u0027A<br />
\u0027O<br />
\u00F9<br />
\u00E9r<br />
\u00E8r<br />
\u00E9<br />
\u00C8t<br />
\u00F4n<br />
\u00E7a<br />
\u00E9 <br />
\u00EAm<br />
\u00E9m<br />
\u00E8s<br />
\u0027 <br />
\u00F2<br />
\u00EC<br />
\u00E8y<br />
\u0027E<br />
\u0027I<br />
\u00F9 <br />
\u00E0 <br />
...<br />
<br />
in other  case i use this code to return value:<br />
<br />
...<br />
URL = &quot;https://situas-servizi.istat.it/publish/reportspooljson?pfun=51&amp;pdata=17/03/1861&quot;<br />
    <br />
    Set xmlhttp = CreateObject(&quot;MSXML2.XMLHTTP&quot;)<br />
    xmlhttp.Open &quot;GET&quot;, URL, False<br />
    xmlhttp.send<br />
    <br />
    STRINGA= xmlhttp.responseText<br />
<br />
    Dim F As Integer<br />
    F = FreeFile<br />
    Open &quot;C:\TABULATI\ISTAT_COMUNI.txt&quot; For Output As #F<br />
    Print #F, STRINGA<br />
    Close #F<br />
    <br />
...<br />
<br />
For AN idea see the First comune Is Agliè... In txt file</div>


	<div style="padding:10px">

	

	

	

	
		<fieldset class="fieldset">
			<legend>Attached Files</legend>
			<ul>
			<li>
	<img class="inlineimg" src="http://www.vbforums.com/images/attach/zip.gif" alt="File Type: zip" />
	<a href="https://www.vbforums.com/attachment.php?attachmentid=196247&amp;d=1783499519">ISTAT_COMUNI.zip</a> 
(162.6 KB)
</li>
			</ul>
		</fieldset>
	

	</div>
]]></content:encoded>
			<category domain="https://www.vbforums.com/forumdisplay.php?1-Visual-Basic-6-and-Earlier">Visual Basic 6 and Earlier</category>
			<dc:creator>luca90</dc:creator>
			<guid isPermaLink="true">https://www.vbforums.com/showthread.php?912131-HOW-to-decode-this-string-in-ascii-code</guid>
		</item>
	</channel>
</rss>
