Loading ...
Sorry, an error occurred while loading the content.
 

[Clip] More Fun With rundll and rundll32.exe

Expand Messages
  • Lawrence M Hamilton, Jr.
    Hey Clippers! Several asked about more information on Rundll32.exe and I found a bunch tonight. I put together some helpful sample clips, and one general
    Message 1 of 14 , Mar 30, 2000
      Hey Clippers!

      Several asked about more information on Rundll32.exe and I found a bunch
      tonight.

      I put together some helpful sample clips, and one general purpose clip
      (it will look familiar to those who saw my submissions on clips to get
      usage of java commands - a versatile structure that was EASILY
      modified!).

      I will not have much time to work with this over the weekend, so I
      thought I would share the gems I unearthed today.

      I will post the various notes and links to my website, once I clean them
      up, so please be patient <VBG>.

      The Get & Run CPL clip will locate all the *.CPL's in the system
      directory and will launch those contral panel applets on the current
      workstation. Some CPL's do not appear to do anything in this manner. USE
      WITH CAUTION! and AT YOUR OWN RISK!

      Any other uses you may have found for this will be greatly appreciated.

      Here are some notes on some of the features of rundll.exe and
      rundll32.exe.
      ------<informational "about" type clip">-----------
      H=";Quick Restart/Shutdown"
      Source: -- Neil J. Rubenking
      From the 9/22/98 issue of PC Magazine

      On the desktop, right-click and go to New, then to Shortcut. (In other
      words, create a new shortcut.) Then on the following path name type:


      C:\windows\rundll.exe user.exe,exitwindows
      *******************************************

      One-click restart


      On the desktop, right-click and select New, then Shortcut. (In other
      words, create a new shortcut.) Then on the following path name type in


      C:\windows\rundll.exe user.exe,exitwindowsexec
      *******************************************

      Neil's fast restart that will close all programs and prompt you to log in
      again:
      rundll32.exe shell32.dll,SHExitWindowsEx
      *******************************************

      Neil's total reboot:
      rundll32.exe shell32.dll,SHExitWindowsEx 2
      *******************************************

      Neil's total shutdown:
      rundll32.exe shell32.dll,SHExitWindowsEx 5


      Use caution with the numbers. It's probably best to stick with 2 and 5.
      Neil tried the number 1 following SHExitWindowsEx, and powered down his
      machine so well that he had to unplug it and plug it back in again.
      ------<END informational "about" type clip">-----------

      ---------< start clip >---------
      H="Get CPL"
      ;Larry Hamilton, Jr. <lmhamilton@...>
      ;03/30/2000, 11:09:00 PM
      ;
      ;----------------------[begin long line]---------------------------
      ;Using Rundll32.exe, you can launch any of the applets found in a CPL
      file, and in many cases you can cause the applet to open on a particular
      page. The basic syntax is
      ;-----------------------[end long line]----------------------------
      ;

      ;rundll32.exe
      ;shell32.dll,Control_RunDLL
      ;filename.cpl

      ;
      ;----------------------[begin long line]---------------------------
      ;To select a particular applet within the file, append a comma, an @
      sign, and the zero-based number of the applet. For example, to launch the
      keyboard applet, which is the second applet within Main.cpl, you would
      use this command:
      ;-----------------------[end long line]----------------------------
      ;

      ;rundll32.exe
      ;shell32.dll,Control_RunDLL
      ;main.cpl,@1


      ;^!Info ^$GetDosOutput("dir c:\*.*")$
      ^!Info We Know From Registry FAQ - Quick launch dial up connection:
      ;^!rundll32.exe rnaui.dll,RnaDial [connection name]

      ;
      ;----------------------[begin long line]---------------------------
      ^!Info Use Rundll32.exe to Format Disks and More ^P^P CAUTION! This will
      attempt to re-format A:\ Drive!!!
      ;-----------------------[end long line]----------------------------
      ;
      ^!rundll32.exe shell32.dll,SHFormatDrive

      ^!Info ^$GetDosOutput("DIR C:\WINDOWS\SYSTEM\*.CPL")$
      ^!Info Time/Date Follows:
      ^!"rundll32.exe shell32.dll,Control_RunDLL timedate.cpl,,")$
      ;
      ;----------------------[begin long line]---------------------------
      ^!Info "Display Properties dialog and opens to the Appearance page (the
      third page; number two in a zero-based scheme):" Follows:
      ;-----------------------[end long line]----------------------------
      ;
      ^!rundll32.exe shell32.dll,Control_RunDLL desk.cpl,@0,2

      ;
      ;----------------------[begin long line]---------------------------
      ^!Info Launch the keyboard applet, which is the second applet within
      Main.cpl, you would use this command:
      ;-----------------------[end long line]----------------------------
      ;
      ^!rundll32.exe shell32.dll,Control_RunDLL main.cpl,@1
      ---------< end clip >-----------

      ---------< start clip >---------
      H="Get & Run CPL"
      ;Larry Hamilton, Jr. <lmhamilton@...>
      ;03/30/2000, 11:09:25 PM
      ;Names of some common Control Panel applets:

      ;Name Description
      ;AppWiz.cpl Add/Remove Programs
      ;Desk.cpl Display Properties
      ;Inetcpl.cpl Internet Properties
      ;Intl.cpl Regional Settings Properties
      ;Joy.cpl Joystick
      ;Main.cpl Mouse Properties
      ;Mmsys.cpl Multimedia Properties
      ;Modem.cpl Modem Properties
      ;Odbccp32.cpl 32 bit ODBC Data Source Administrator
      ;Password.cpl Password Properties
      ;Sysdm.cpl System Properties
      ;Themes.cpl Desktop Themes
      ;Timedate.cpl Date/Time Properties
      ;Wgpocpl.cpl MS Workgroup Post Office
      ;Netcpl.cpl Network Properties

      ;^!SetDebug On
      ^!ClearVariables
      ^!SET %ErrorFile%=^$GetStdErrorName$
      ^!DestroyDoc ^%ErrorFile%

      ^!SetHintInfo Calculating...
      ^!SetListDelimiter=^%SPACE%
      ;
      ;----------------------[begin long line]---------------------------
      ^!SetArray
      %FileList%=^$GetFiles(^?[(T=D)Directory=C:\WINDOWS\SYSTEM\];"*.CPL")$
      ;-----------------------[end long line]----------------------------
      ;

      ;
      ;----------------------[begin long line]---------------------------
      ^!Set
      %list%=^$StrReplace("C:\WINDOWS\SYSTEM\";"|";"^%FileList%";False;True)$
      ;-----------------------[end long line]----------------------------
      ;
      ^!Set %list2%=^$StrReplace(".cpl ";"^%EMPTY%";"^%List%";False;True)$
      ^!Set %Show%=^$StrDelete("^%List2%";1;1)$

      ^!SetWizardTitle Get CPL Name
      ^!SetWizardLabel These are the Control Panel Applets on your PC:
      ^!Info ^%Show%
      ^!Set %pgm%=^?{(T=C;H=24)Exe's=^%Show%}

      ;Commandline to run a java applet from commandline.
      ^!SetWizardTitle Command Usage
      ^!"rundll32.exe shell32.dll,Control_RunDLL ^%pgm%.cpl,,")$
      ;^!Info ^$GetOutput("^%pgm%")$

      ^!If ^$GetTextSize$ > 1 SKIP
      ^!Close DISCARD
      ;// Check for an error file
      ^!IFFILEEXIST "^%ErrorFile%" DISPLAYERROR
      ;// No errors to refocus on source code document
      ^!SetDocIndex ^%DocIndex%
      ^!GOTO END
      ;// Load and display errors
      :DISPLAYERROR
      ^!SetWizardTitle Error Stream
      ^!Info ^$GetFileText(^%ErrorFile%)$
      ;^!OPEN ^%ErrorFile%
      ^!SetWordWrap ON
      ;^!SOUND SystemExclamation
      ---------< end clip >-----------

      Keep On Clippin'


      Larry Hamilton, Jr. lmhamilton@...
      Hamilton National Genealogical Society, Inc.
      http://www.HamiltonGenSociety.org/
      My Web Site: http://notlimaH.tripod.com

      ________________________________________________________________
      YOU'RE PAYING TOO MUCH FOR THE INTERNET!
      Juno now offers FREE Internet Access!
      Try it today - there's no risk! For your FREE software, visit:
      http://dl.www.juno.com/get/tagj.
    • Jody
      Hi Larry H., Jr., ... Does that come in an Outline flavour? I will post it on my site for you if you are willing to build the .otl? Happy Camper, Jody Adair
      Message 2 of 14 , Mar 30, 2000
        Hi Larry H., Jr.,

        > Several asked about more information on Rundll32.exe and I
        > found a bunch tonight.

        Does that come in an Outline flavour? I will post it on my site
        for you if you are willing to build the .otl?

        Happy Camper,
        Jody Adair
        Prov. 15:15

        Clean-Funnies
        mailto:CF@...?Subject=subscribe
      • Eric G.V. Fookes
        Hi Larry and Clippers, ... H= Execute CPL ^!SetListDelimiter=| ;----------------------[begin long line]--------------------------- ^!Set
        Message 3 of 14 , Mar 31, 2000
          Hi Larry and Clippers,

          Interesting :) Here's a shorter version of the Clip:

          ---------< start clip >---------
          H="Execute CPL"
          ^!SetListDelimiter=|
          ;----------------------[begin long line]---------------------------
          ^!Set
          %List%=^$StrReplace("^$GetSysPath$";;"^$GetFiles("^$GetSysPath$";"*.cpl")$";False;False)$
          ;-----------------------[end long line]----------------------------
          ^!Set %List%=^$StrCapitalize("^$StrReplace(".cpl";;"^%List%";False;False)$")$
          ^!Set %Value%=^?{(H=15)Choose CPL program to execute==^%List%}
          ^!"rundll32.exe shell32.dll,Control_RunDLL ^%Value%.cpl,,"
          ---------< end clip >-----------

          As Larry says, use with caution.

          Regards,
          Eric Fookes
          -----------
          NoteTab v4.81 available from
          http://www.notetab.com and http://www.notetab.ch








          ...
        • Lawrence M Hamilton, Jr.
          Hey Clippers! I am having an unusually slow day at work, so I got my notes cleaned up, and created a Library of Rundll clips, and an outline of notes posted on
          Message 4 of 14 , Mar 31, 2000
            Hey Clippers!

            I am having an unusually slow day at work, so I got my notes cleaned up,
            and created a Library of Rundll clips, and an outline of notes posted on
            my site.

            My NoteTab Page:

            http://notlimah.tripod.com/notetab.htm

            Direct Download:

            http://notlimah.tripod.com/files/Rundll.zip

            The outline is still pretty rough, mostly a copy of the text on the
            webpages where I found it, but I also include the links, so you can find
            the information yourself.

            I would be interested to hear via **_PRIVATE_** email any comments or
            suggestions, or any other bits of information you may find on
            Rundll/Rundll32.exe.

            This is all I have, so please do not ask if I have more! I will update
            the outline and let the list know when I do. ; )

            The information I have in my outline I found last night using
            www.google.com, and searching for Rundll32.exe. I got a LOT of stuff in
            languages I do not speak, or not well enough to wade through computer
            jargon, but probably as good as I got in English. So if English is not
            your native tongue, there are plenty of pages that came up in German,
            Chinese, and several others.

            HTH,


            Larry Hamilton, Jr. lmhamilton@...
            Hamilton National Genealogical Society, Inc.
            http://www.HamiltonGenSociety.org/
            My Web Site: http://notlimaH.tripod.com

            P.S. Jody, if you want to post the outline on your site, go ahead! I'll
            charge my usual fee <g>!
            ________________________________________________________________
            YOU'RE PAYING TOO MUCH FOR THE INTERNET!
            Juno now offers FREE Internet Access!
            Try it today - there's no risk! For your FREE software, visit:
            http://dl.www.juno.com/get/tagj.
          • Eb Guenther
            Hi Eric, Hi Eric, Heck of a nifty clip, but how s come ^%List% in your code: ^!SetListDelimiter=| ; ^!Set
            Message 5 of 14 , Mar 31, 2000
              Hi Eric,

              Hi Eric,

              Heck of a nifty clip, but how's come "^%List%" in
              your code:

              ^!SetListDelimiter=|
              ;
              ^!Set
              %List%=^$StrReplace("^$GetSysPath$";;"^$GetFiles("^$GetSysPath$";"*.cpl")$";
              False;False)$
              ;
              ^!Set %Value%=^?{(H=15)Choose CPL program to execute==^%List%}

              gets the new default delimiter, but in _my_ code:

              ^!SetListDelimiter=|
              ^!Set %List%=^$GetValue("Settings:whatever")$
              ^!Set %Value%=^?{(H=15)Choose from the list==^%List%}

              it does NOT get the new default??

              Are my lines too short? ;-)

              Both functions (^$GetFiles and ^$GetValue) have a default
              delimiter different from "|". Should they not work the
              the same in this respect -- either output the new default,
              or not?

              In other words, why does ^!SetListDelimiter work with
              ^$GetFiles function, but not with ^$GetValue function?


              Regards,

              Eb
            • Jody
              Hi Eb ... The first %List% is used to remove the path and then the second removes the extension from ^%List% and Capitalizes the names. It is not necessary,
              Message 6 of 14 , Mar 31, 2000
                Hi Eb

                > Heck of a nifty clip, but how's come "^%List%" in your code:

                The first %List% is used to remove the path and then the second
                removes the extension from ^%List% and Capitalizes the names. It
                is not necessary, but makes for a nicer display in the listbox
                with only the name. It is easier to choose from like that.

                >^!Set %Value%=^?{(H=15)Choose CPL program to execute==^%List%}
                >
                > gets the new default delimiter, but in _my_ code:

                It is not suppose to remember; I think you may be confusing it
                with a Clip from SampleCode: Remember default value:

                ^$SetDefaultValue(^%ValueList%;^%DefaultValue%)$

                If you wanted to use that it would be better done by hard coding
                the cpl's into an H= box, but it would only be remembered as long
                as you had the Library open unless you used the %p_ thingie. <g>
                You could do it in an ini file saving the last used value, but it
                sure seems like a lot of code for something you might not use
                that often.

                > ^!SetListDelimiter=|

                > In other words, why does ^!SetListDelimiter work with
                > ^$GetFiles function, but not with ^$GetValue function?

                The vertical bar is needed for the format of the listbox. So,
                when getting the file path\names Eric set the delimiter so that
                it could be used in the listbox and not the default delimiter.
                Perhaps this will explain it better:

                ^!Info ^$GetFiles("^$GetSysPath$";"*.cpl")$
                ^!SetListDelimiter=|
                ^!Info ^$GetFiles("^$GetSysPath$";"*.cpl")$

                H=Execute CPL
                ^!SetListDelimiter=|
                ^!Set %List%=^$StrReplace("^$GetSysPath$";;"^$GetFiles("^$GetSysPath$";"*.cpl")$";False;False)$
                ^!Set %List%=^$StrCapitalize("^$StrReplace(".cpl";;"^%List%";False;False)$")$
                ^!Set %Value%=^?{(H=15)Choose CPL program to execute==^%List%}
                ^!"rundll32.exe shell32.dll,Control_RunDLL ^%Value%.cpl,,"

                Happy Clip'n!
                Jody

                http://www.sureword.com/notetab

                Subscribe, UnSubscribe, Options
                mailto:Ntb-Clips-Subscribe@...
                mailto:Ntb-Clips-UnSubscribe@...
                http://www.egroups.com/list/ntb-clips
              • Jody
                Hi Eb, ... This is what one item would have looked like without removing the path and extension: C: WINDOWS SYSTEM Tweakui.cpl This is what ^%Value% would
                Message 7 of 14 , Mar 31, 2000
                  Hi Eb,

                  > The first %List% is used to remove the path and then the second
                  > removes the extension from ^%List% and Capitalizes the names.
                  > It is not necessary, but makes for a nicer display in the
                  > listbox with only the name. It is easier to choose from like
                  > that.

                  This is what one item would have looked like without removing the
                  path and extension:

                  C:\WINDOWS\SYSTEM\Tweakui.cpl

                  This is what ^%Value% would contain if you clicked on the above
                  and it would still work (provided you take out the .cpl in the
                  existing line just leaving ^%Value%

                  ^!"rundll32.exe shell32.dll,Control_RunDLL C:\WINDOWS\SYSTEM\Tweakui.cpl,,"

                  So, if you wanted to have the full path in, etc.:

                  H=Execute CPL w/paths
                  ^!SetListDelimiter=|
                  ^!Set %List%=^$GetFiles("^$GetSysPath$";"*.cpl")$
                  ^!Set %Value%=^?{(H=15)Choose CPL program to execute==^%List%}
                  ^!"rundll32.exe shell32.dll,Control_RunDLL ^%Value%,,"

                  As Larry and Eric said, use with caution.

                  Whatever that means. <vbg> Methinks some of you would have a
                  heart attack because of some of things I do and try for grins.
                  It is all a learning process for me. Help files are my last
                  resort. ;)

                  Personally, I think it would be better to build a permanent
                  listbox so you could name the .cpl's. Gee, who would have
                  thought that main is really mouse and what is DS1. ;)

                  Happy Clip'n!
                  Jody

                  http://www.sureword.com/notetab

                  Subscribe, UnSubscribe, Options
                  mailto:Ntb-Clips-Subscribe@...
                  mailto:Ntb-Clips-UnSubscribe@...
                  http://www.egroups.com/list/ntb-clips
                • Eb Guenther
                  Hi Jody, I must not have phrased my question right. I understood the clip Eric presented. I did NOT understand why my clip, using the same technique to
                  Message 8 of 14 , Apr 1, 2000
                    Hi Jody,

                    I must not have phrased my question right.
                    I understood the clip Eric presented. I did
                    NOT understand why my clip, using the same
                    technique to populate a prompt string, did not.

                    Eric's clip inserted the "|" as list delimiter,
                    allowing ^%List% to be used as prompt in a
                    Wizard (item1|item2|...).

                    My clip, using nearly identical code, except
                    for the function that fetched an array, did not.

                    Why is that?



                    >Hi Eb
                    >
                    > > Heck of a nifty clip, but how's come "^%List%" in your code:
                    >
                    >The first %List% is used to remove the path and then the second
                    >removes the extension from ^%List% and Capitalizes the names. It
                    >is not necessary, but makes for a nicer display in the listbox
                    >with only the name. It is easier to choose from like that.
                    >
                    > >^!Set %Value%=^?{(H=15)Choose CPL program to execute==^%List%}
                    > >
                    > > gets the new default delimiter, but in _my_ code:
                    >
                    >It is not suppose to remember; I think you may be confusing it
                    >with a Clip from SampleCode: Remember default value:
                    >
                    >^$SetDefaultValue(^%ValueList%;^%DefaultValue%)$
                    >
                    >If you wanted to use that it would be better done by hard coding
                    >the cpl's into an H= box, but it would only be remembered as long
                    >as you had the Library open unless you used the %p_ thingie. <g>
                    >You could do it in an ini file saving the last used value, but it
                    >sure seems like a lot of code for something you might not use
                    >that often.
                    >
                    > > ^!SetListDelimiter=|
                    >
                    > > In other words, why does ^!SetListDelimiter work with
                    > > ^$GetFiles function, but not with ^$GetValue function?
                    >
                    >The vertical bar is needed for the format of the listbox. So,
                    >when getting the file path\names Eric set the delimiter so that
                    >it could be used in the listbox and not the default delimiter.
                    >Perhaps this will explain it better:
                    >
                    >^!Info ^$GetFiles("^$GetSysPath$";"*.cpl")$
                    >^!SetListDelimiter=|
                    >^!Info ^$GetFiles("^$GetSysPath$";"*.cpl")$
                    >
                    >H=Execute CPL
                    >^!SetListDelimiter=|
                    >^!Set
                    >%List%=^$StrReplace("^$GetSysPath$";;"^$GetFiles("^$GetSysPath$";"*.cpl")$"
                    >;False;False)$
                    >^!Set %List%=^$StrCapitalize("^$StrReplace(".cpl";;"^%List%";False;False)$")$
                    >^!Set %Value%=^?{(H=15)Choose CPL program to execute==^%List%}
                    >^!"rundll32.exe shell32.dll,Control_RunDLL ^%Value%.cpl,,"
                    >
                    >Happy Clip'n!
                    >Jody
                    >
                    >http://www.sureword.com/notetab
                    >
                    >Subscribe, UnSubscribe, Options
                    >mailto:Ntb-Clips-Subscribe@...
                    >mailto:Ntb-Clips-UnSubscribe@...
                    >http://www.egroups.com/list/ntb-clips
                    >
                    >
                    >------------------------------------------------------------------------
                    >Special Offer-Earn 300 Points from MyPoints.com for trying @Backup
                    >Get automatic protection and access to your important computer files.
                    >Install today:
                    >http://click.egroups.com/1/2344/4/_/2798/_/954550714/
                    >
                    >eGroups.com Home: http://www.egroups.com/group/ntb-clips/
                    >http://www.egroups.com - Simplifying group communications
                    >
                    < -- end quote --
                  • RS
                    Hi Eb, ... %List%=^$StrReplace( ^$GetSysPath$ ;; ^$GetFiles( ^$GetSysPath$ ; *.cpl )$ ; False;False)$ ... Just a guess, no time to research myself: Your clip
                    Message 9 of 14 , Apr 1, 2000
                      Hi Eb,

                      At 04/01/00 07:53 AM -0600, you wrote:
                      >I must not have phrased my question right.
                      >I understood the clip Eric presented. I did
                      >NOT understand why my clip, using the same
                      >technique to populate a prompt string, did not.


                      >^!SetListDelimiter=|
                      >;
                      >^!Set
                      %List%=^$StrReplace("^$GetSysPath$";;"^$GetFiles("^$GetSysPath$";"*.cpl")$";
                      False;False)$
                      >;
                      >^!Set %Value%=^?{(H=15)Choose CPL program to execute==^%List%}
                      >
                      >gets the new default delimiter, but in _my_ code:
                      >
                      >^!SetListDelimiter=|
                      >^!Set %List%=^$GetValue("Settings:whatever")$
                      >^!Set %Value%=^?{(H=15)Choose from the list==^%List%}
                      >
                      >it does NOT get the new default??


                      Just a guess, no time to research myself:

                      Your clip is setting %List% with a single value. Eric's assigns a list of
                      values with the GetFiles function.




                      Regards,

                      RS


                      ======================================================

                      ClipWriter 2.0 - Millenium Edition

                      Coming soon


                      http://home.att.net/~ptools/ClipWriter/cw.htm

                      http://home.att.net/~ptools/main/index.htm




                      ======================================================







                      ======================================================
                    • Eb Guenther
                      Hi RS, I understood the clip Eric presented. I did ... Thanks RS, but the ^$GetValue function retrieves a semicolon delimited list from the INI file. It does
                      Message 10 of 14 , Apr 1, 2000
                        Hi RS,

                        I understood the clip Eric presented. I did
                        >>NOT understand why my clip, using the same
                        >>technique to populate a prompt string, did not.
                        >
                        >
                        > >^!SetListDelimiter=|
                        > >;
                        > >^!Set
                        > %List%=^$StrReplace("^$GetSysPath$";;"^$GetFiles("^$GetSysPath$";"*.cpl")$
                        > "; False;False)$
                        > >;
                        > >^!Set %Value%=^?{(H=15)Choose CPL program to execute==^%List%}
                        > >
                        > >gets the new default delimiter, but in _my_ code:
                        > >
                        > >^!SetListDelimiter=|
                        > >^!Set %List%=^$GetValue("Settings:whatever")$
                        > >^!Set %Value%=^?{(H=15)Choose from the list==^%List%}
                        > >
                        > >it does NOT get the new default??
                        >
                        >
                        >Just a guess, no time to research myself:
                        >
                        >Your clip is setting %List% with a single value. Eric's assigns a list of
                        >values with the GetFiles function.
                        >

                        Thanks RS, but the ^$GetValue function retrieves a semicolon
                        delimited list from the INI file. It does not matter whether
                        I use Get or getArray, the result is NOT "|" delimited, even
                        though I specifically SET "|" as delimiter.

                        Eric's ^$GetFiles function retrieves a ^%NL% delimited list
                        of filenames, which winds up as "|" delimited in %List%.

                        This is a neat bit of magic, eliminating the need for a
                        separate replacement of ";" with "|", to convert an array
                        to a prompt string for a Wizard. But it doesn't work with
                        other functions, so far.

                        Regards,

                        Eb
                      • RS
                        Hi Eb, ... mmmmmm :( Eric...? Regards, RS ====================================================== ClipWriter 2.0 - Millenium Edition Coming soon
                        Message 11 of 14 , Apr 1, 2000
                          Hi Eb,

                          At 04/01/00 12:25 PM -0600, you wrote:
                          >Thanks RS, but the ^$GetValue function retrieves a semicolon
                          >delimited list from the INI file. It does not matter whether
                          >I use Get or getArray, the result is NOT "|" delimited, even
                          >though I specifically SET "|" as delimiter.
                          >
                          >Eric's ^$GetFiles function retrieves a ^%NL% delimited list
                          >of filenames, which winds up as "|" delimited in %List%.
                          >
                          >This is a neat bit of magic, eliminating the need for a
                          >separate replacement of ";" with "|", to convert an array
                          >to a prompt string for a Wizard. But it doesn't work with
                          >other functions, so far.


                          mmmmmm :(

                          Eric...? <g>




                          Regards,

                          RS


                          ======================================================

                          ClipWriter 2.0 - Millenium Edition

                          Coming soon


                          http://home.att.net/~ptools/ClipWriter/cw.htm

                          http://home.att.net/~ptools/main/index.htm




                          ======================================================







                          ======================================================
                        • Jody
                          Hi Eb, Sorry for the misunderstanding and I can only offer a work around now. ... ^!SetListDelimiter=| ^!Set %List%=^$GetValue( Settings:whatever )$ ^!Set
                          Message 12 of 14 , Apr 1, 2000
                            Hi Eb,

                            Sorry for the misunderstanding and I can only offer a work
                            around now.

                            > I did NOT understand why my clip, using the same
                            > technique to populate a prompt string, did not.

                            > Why is that?

                            ^!SetListDelimiter=|
                            ^!Set %List%=^$GetValue("Settings:whatever")$
                            ^!Set %Value%=^?{(H=15)Choose from the list==^%List%}

                            We cannot set the delimiter in all cases it seems. It is
                            ignored below.

                            ^!SetListDelimiter=|
                            ^!Set %List%=a,b,c,d,e,f,g
                            ^!Set %Value%=^?{(H=15)Choose from the list==^%List%}

                            Here is a work around:

                            ^!SetIniFile DeleteMe
                            ^!SaveValue DeleteMe:MeToo=a,b,c,d,e,f,g
                            ^!Set %List%=^$StrReplace(",";|;"^$GetValue(DeleteMe:MeToo)$";0;0)$
                            ^!Set %Value%=^?{(H=15)Choose from the list==^%List%}
                            ^!DeleteFile ^$GetLibraryPath$DeleteMe.ini

                            This one works for me because the delimiter is already a vertical
                            bar in my saved value list.

                            ^!SetIniFile NtbUsers
                            ^!Set %List%=^$GetValue(NoteSort:ShortList)$
                            ^!Set %Value%=^?{(H=15)Choose from the list==^%List%}

                            Happy Clip'n!
                            Jody

                            http://www.sureword.com/notetab

                            Subscribe, UnSubscribe, Options
                            mailto:Ntb-Clips-Subscribe@...
                            mailto:Ntb-Clips-UnSubscribe@...
                            http://www.egroups.com/list/ntb-clips
                          • Eb Guenther
                            Hi Jody, ... I ve been using something similar to your first workaround, storing arrays in INI files using the default delimiter. Using the V-bar as array
                            Message 13 of 14 , Apr 3, 2000
                              Hi Jody,


                              >Here is a work around:
                              >
                              >^!SetIniFile DeleteMe
                              >^!SaveValue DeleteMe:MeToo=a,b,c,d,e,f,g
                              >^!Set %List%=^$StrReplace(",";|;"^$GetValue(DeleteMe:MeToo)$";0;0)$
                              >^!Set %Value%=^?{(H=15)Choose from the list==^%List%}
                              >^!DeleteFile ^$GetLibraryPath$DeleteMe.ini
                              >
                              >This one works for me because the delimiter is already a vertical
                              >bar in my saved value list.
                              >
                              >^!SetIniFile NtbUsers
                              >^!Set %List%=^$GetValue(NoteSort:ShortList)$
                              >^!Set %Value%=^?{(H=15)Choose from the list==^%List%}

                              I've been using something similar to your first
                              workaround, storing arrays in INI files using the
                              default delimiter.

                              Using the V-bar as array delimiter still seems a bit
                              foreign to me. So your second workaround never occurred
                              to me. If you recal, I have a bot of a mental block
                              when it comes to array delimiters <G>.

                              Thanks for the tip,

                              Eb

                              --
                              Another word for "grin and bare it": "moon".
                            • Jody
                              Hi Eb, ... hehehe. If you don t think of the delimiters as the standard type you are use to seeing like quotes, tabs, semi-colons, space, and comma, but
                              Message 14 of 14 , Apr 3, 2000
                                Hi Eb,

                                >> ^!SaveValue DeleteMe:MeToo=a,b,c,d,e,f,g
                                >> ^!Set %List%=^$StrReplace(",";|;"^$GetValue(DeleteMe:MeToo)$";0;0)$

                                >> This one works for me because the delimiter is already a
                                >> vertical bar in my saved value list.
                                >
                                > I've been using something similar to your first workaround,
                                > storing arrays in INI files using the default delimiter.
                                >
                                > Using the V-bar as array delimiter still seems a bit foreign to
                                > me. So your second workaround never occurred to me. If you
                                > recal, I have a bot of a mental block when it comes to array
                                > delimiters <G>.

                                hehehe. If you don't think of the delimiters as the standard
                                type you are use to seeing like quotes, tabs, semi-colons, space,
                                and comma, but instead think of them as a wild card to separate
                                any kind of list with, then it may come a bit easier. Eric has a
                                Clip in SampleCode I think, might be Utilities, that you can
                                enter a number for the paragraph you want. He uses a double ^p:

                                ^!SetListDelimiter ^p^p

                                ... so each paragraph (separated by a blank line) is one item in
                                the list. ;) Having that kind of flexibility makes it really
                                nice at times, because if we were limited to a few there would be
                                times we would have to modify our delimiter in the document
                                because of conflict with whatever we were allowed to use.

                                Happy Clip'n!
                                Jody

                                http://www.sureword.com/notetab

                                Subscribe, UnSubscribe, Options
                                mailto:Ntb-Clips-Subscribe@...
                                mailto:Ntb-Clips-UnSubscribe@...
                                http://www.egroups.com/list/ntb-clips
                              Your message has been successfully submitted and would be delivered to recipients shortly.