It's usually better to get the MSDN page on the function and not the VB page. See
this page.
As you can see, the function takes strings as arguments. Because of that (or because the MSDN page says so - not in this case) it has both Unicode and ASCII versions. This means you can call it in two ways, as ShellAboutA and as ShellAboutW. Since NSIS is ASCII too you must call it as ShellAboutA.
Now to the DLL it's located in. According to the VB definition it's shell32.dll. This is usually at the bottom of the MSDN page (Import library - shell32.lib). So the line should look like this for now:
System::Call "shell32::ShellAboutA(
Now for the arguments. The first argument is "Window handle to a parent window. This parameter can be NULL.", though can be NULL we have the value so we will send it. HWND is a handle, and handles are to be sent as integers in System.dll. So our line will now look like:
System::Call "shell32::ShellAboutA(i $HWNDPARENT,
Next argument is the title, text title. Text is 't' in System.dll.
System::Call "shell32::ShellAboutA(i $HWNDPARENT, t 'My title#my second title',
Next argument is "other stuff", also text.
System::Call "shell32::ShellAboutA(i $HWNDPARENT, t 'My title#my second title', t 'other stuff, copyright 2003, bla bla bla'
Next, and last argument is a handle to an icon. To avoid loading icons with System.dll for now we'll just use the default icon and for that we'll pass on NULL (see the MSDN page). NULL is actually 0 and as I said before a handle is 'i' in System.dll, so:
System::Call "shell32::ShellAboutA(i $HWNDPARENT, t 'My title#my second title', t 'other stuff, copyright 2003, bla bla bla', i 0)
Last but not least is the return value. The return value is an integer, again i. So:
System::Call "shell32::ShellAboutA(i $HWNDPARENT, t 'My title#my second title', t 'other stuff, copyright 2003, bla bla bla', i 0) i .s"
The last .s means the return value will be pushed on the NSIS stack so you should pop to get its value.