Where is the registry key for the default audio device in Windows 7?

Win 7 only allows playback out of one device (ie front or back audio jack) at a time.  If you have something plugged in to both at the same time, it will only play out of the one that is set to be the default audio device.  This can be changed
in the 'Manage Audio Devices' window by selecting the the desired device from the Playback tab and clicking Set Default.  What I would like to do, as it is very annoying to have to go here every time I want to switch between my headphones and speakers,
is write a script that will change which device is the default playback device, so if I push one of my extra keys on my keyboard it will change it to speakers, and if I push a different button, it will change it to headphones (or one button that will switch
to whichever one is not the default).  I have a script currently that opens the window and simulates clicking the set default button, but it is not ideal as it has to actually open the window.  I figure if I can just change whichever registry key
is storing the default playback device, it will work a lot better.

Once again, a clear cut case for it being ABSOLUTELY WRONG for anyone but the original poster to mark a question as answered.
I've tried 3 different machines of difference pedigrees (all x64 though) and none of them have that key.
DAS
The question is not about x64 machines,  The answer was correct for the question.  The question is closed.  If you have a new question please start a new topic.
Please review the forum guidelines.
http://social.technet.microsoft.com/Forums/en-US/ITCG/thread/a0def745-4831-4de0-a040-63b63e7be7ae
jv

Similar Messages

  • I have to tweak the registry key for the adobe photoshop cs5 bugs

    Hi
    i did a search around the net
    and for example i have not export feature in bridge
    i have to change the registry key [HKEY_LOCAL_MACHINE\SOFTWARE\Adobe\DefaultLanguage\CS5]
    "AdobeProductLanguage"="en_GB" or IT
    to en_US or french to have the export extension
    now i setup AdobeProductLanguage=en_US
    does the shortcuts/hotkey change ?
    i mean does photoshop cs5 or other components work like before ?
    thanks
    i care a lot about that
    cheers

    Hello Steve,
    I can go on and am offered the choice to download content fron the adobe site ...
    I didn't do that up to now. I tried to reinstall from the content-DVD which doesn't work
    until you uninstall the (already installed) content and reinstall it later on.
    In fact the content is missing, if you try to continue without reinstalling the contents!
    The most curious thing to me is the fact that this happens incidently ....
    It may happen on the very next start of Premiere Elements 10, it may happen
    some days later after maybe 10 restarts of the software.
    Thank you very much for your reply ...
    greeting from Dortmund (Germany)
    Klaus

  • How to find out what is the lock key for the computer

    How to find out what is the lock key for the computer?

    You don't.
    If you forgot or lost the password, all you can practically do is reset it.
    The manner in which you do so depends on what version of OS X you are running. The older versions utilize the reset password utility on your recovery/re-installation disk/drive.
    On Lion, you use the following technique to reset the Administrators password:
    Boot to your Lion Recovery Partition, by holding down the Option key while starting, and then selecting the Recovery HD as the boot choice.
    Once booted, at the top of the screen is a menu ..., select Utilities / Terminal from the menu bar.
    In the Terminal window, type “resetpassword” (without the quotes) and press return. A “Reset Password” window will open. Select your boot volume (your SSD drive) if it is not already selected. Select your administrators username from the menu labeled “Select the user account” if it is not already selected. Follow the prompts to reset the password. Restart the computer from the apple menu.

  • Registry keys for the per-machine proxy settings

    Hello,
    I'm writing a C++ software that's supposed to set proxy settings for all users. I succeeded at disabling the per-user-proxy-settings through the COM Group Policy objects but I cannot find where to define the machine-wide proxy settings. The most
    logical answer was to modify the values under the registry key HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings but IE seems to be ignoring them. Any ideas as how to set the proxy settings in this case ? 

    Hi,
    To configure the proxy server settings on a client computer, create the following .reg file to populate the registry with the proxy server information:
    Regedit4
    [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings]
    "MigrateProxy"=dword:00000001
    "ProxyEnable"=dword:00000001
    "ProxyHttp1.1"=dword:00000000
    "ProxyServer"="http://ProxyServername:80"
    "ProxyOverride"="<local>"
    In this file, ProxyServer name is the name of your proxy server.
    Thanks!
    Andy Altmann
    TechNet Community Support

  • Registry key for the setting "Let printer determine colors"

    Hi,
    We have a Citrix environment with several Terminal servers. When people print PDF through Adobe Reader. We get the error message "Let printer determine colors".
    Then we have to select "Let printer determine colors" to allow Xerox printer to do the color handling.
    Is there a registry key or something I can do to alway let the Let printer determine colors?
    So that the users won`t be bugged with this message everytime?
    Regards Tom Ruben

    There are some docs that document all Reader settings, but these are rather difficult to navigate.  I do not even want to go and look for them now.
    If I have an issue like yours (need to know the registry equivalent for a certain Reader setting) I use Regshot: take a registry shot before and after the update, then compare what's changed.

  • Where on my computer do i find the location of the url and registry key for the toolbars on my system?

    we are trying to find the url of one of our toolbars so we can use it on another system. the main interest is how we can locate different parts of the screen display within the computer. we have a very limited understanding of regedit thus will need expanded instructions.
    we have a MSI system using window xp sp2
    we use firefox
    we have two toolbars

    Hi massurfer,
    I am not sure that you need regedit, but this might be helpful,
    http://kb.mozillazine.org/Localstore.rdf
    This explanation of customizing localstore.rdf looks possibly helpful as well:
    http://mike.kaply.com/2012/03/30/customizing-firefox-default-profiles/
    Good luck!

  • TS1569 Where do I find the pass key for the wireless keyboard?

    Where do I find my pass key for my new wireless keyboard?

    It comes up on the screen of your Mac when going through the pairing process, as shown here:
    http://support.apple.com/kb/TS1569?viewlocale=en_US&locale=en_US

  • Where is the recovery key for the final step in the sync setup?

    I have account from a previous attempt. On device one, I go to set up sync. I answer I have an account [attempt to reset the account resulted in "email address already in use" error]. Device 1 shows three pair a device codes.
    Device 2: I go to the Firefox home page. I choose sync at the bottom, and enter the three codes on device number 2. I then answer that I have an account, enter my user name and password, and am asked for a recovery key which is to be found under sync options on device one. It is not: all I have are the options for what data is to be migrated [and I checked all].
    How do I complete the sync procedure?

    "I don't have the devise with me" should be a link at the bottom of the page that open if you click "I have an account" on the initial setup page.
    <img src="https://support.cdn.mozilla.net/media/uploads/gallery/images/2012-01-03-16-30-26-7869f2.png">

  • How do you find the wep key for the wifi?

    I need the WEP key to be able to acess my wifi through my playstation. And i am unsure of which operating system to choose i know i have the most up to date one though

    Is the Wi-Fi network, provided by your AirPort Extreme, configured for WEP wireless encryption? If not, and is using WPA or WPA2 instead, then the Playstation is not properly recognizing the security type.
    Which exact version of the Extreme do you have?
    By operating system, are you referring to the one you are running on your computer? Is so, what is the make & model of your computer?

  • HT1343 How do you replace the dollar key for the british pound

    How to you replace the dollar sign with the british pound.

    HI,
    In System Preferences > Language and Text > Input Source tab choose the British Keyboard option.
    8:28 PM      Thursday; August 29, 2013
      iMac 2.5Ghz 5i 2011 (Mountain Lion 10.8.4)
     G4/1GhzDual MDD (Leopard 10.5.8)
     MacBookPro 2Gb (Snow Leopard 10.6.8)
     Mac OS X (10.6.8),
     Couple of iPhones and an iPad
    "Limit the Logs to the Bits above Binary Images."  No, Seriously

  • Deleted the Registry Entry for OracleJobScheduler service. How to recreate?

    I accidently deleted the registry entry for the OracleJobScheduler Service for my production database. I know I shouldn't have -- but I was re-creating the console and clicked on the wrong thing.
    Is there a way to recreate the service? I copied the registry entry from another database, but the service isn't showing up in the Services window. I know how to create services using the NT Kit, but I am not certain how I need to set it up.
    Thanks in advance,
    DJM

    I do not think you needed it. But in case you want to put it back, export OracleJobScheduler<SID> from any other windows database server, open and edit it in wordpad to change servicename, ImagePath and DisplayName, then import into this server.

  • After having had to upgrade to windows 7 i cant find the product key for my photoshop elements 8

    i kept the download for my photoshop elements 8 but after the windows 7 upgrade i cant find the product key for the PSE8

    This isn't the PSE forum Edward, but you might be aware of that.
    PSE8 is going to be fairly old I'm thinking?  Like I said... this is not the PSE forum so people don't tend to know much about it.   The reason I make that point, is that if you have previously registered your copy of PSE8, you will be able to log on to your Adobe ID, go to My orders, and find both a link to download the installation file, and your serial number.
    Other than that, I am not sure how you will find it.

  • Secret key for the OpenPGP?????

    What am I getting the message "enter passphrase to unlock the secret key for the OpenPGP certificate:..."  when I try to send email via AOL on my Mac?  My gmail account is fine.  I can't send email via my AOL account from my computer any longer because it is requiring a passphrase which I do not have nor ever set up.  My gmail account is fine.  Help!

    Uninstall GPGTools by following the developer's instructions.
    How can I uninstall your software? / FAQ / Knowledge Base - GPGTools Support

  • Issue concerning the EasyLink Advisor for the Wrt54gs v6.0

    On Monday of this last week, my ISP was changed from DirectTV/Qwest, to Cox Cable. When I returned home, our connection setup had been changed. We had setup a modem and the router in a different room, with the network being unsecure, and not supported by a computer system. Now, we have the router connected to the PC, and the modem in the room as well.
    Now, the Circo System light is orange, as opposed to the usual white, and my wireless adapter gets kicked off of the network I had to recreate, which is unsecure, every 12 hours. I think this may be because the CPU with the wireless router does not have the EasyLink Advisor installed on it, and the disc is nowhere in sight.
    My question is, do I need the advisor, and if so, where can I get it, without the disc? I've looked around the forum, and I can't find a clue. The system with the wireless router is a Windows XP, and the system with the adapter is a Windows Vista. And if that happens to not be the case, what should I try to do? Any help is appreciated, thank you.

    No need to use the easylink advisor what you could do is try upgrading the firmware of the router & keep on holding tightly the reset button in such a way that power light is blinking on the router & then do a complete network power cycle i.e., unplug the power cables from the modem & from the router & then plug in the power cable
    to the modem first once all the lights are solid green you could plug in the power cable to the router & check out it will definatelyConfiguration for cable connection:-
     Access the setup page of the router by launching an Browser and type on the address bar, 192.168.1.1 and press enter. When it prompts for the username and password, leave the username field empty and provide password as admin" (Without quotes) click on ok.
    On the main setup page the ""Internet Connection Type"" should be on ""Obtain IP Automatically - DHCP “. Click on the Save Settings button.
    Now click on the sub tab ""MAC address clone"".
    - Click on enable
    Click Clone & click save settings
    Check WAN Ip on Status page of router ....
    If getting Valid Ip .... try going online
    If not ... power cycle for 4-5 minutes & then agian check the WAN Ip address .....
    Step 03 : To configure the router for Wireless.
    For Wireless Settings, please do the following : -
    Click on the Wireless tab
    - Here Wireless Network mode should be mixed
    - Provide any name in the Wireless Network Name (SSID) box, all in
    lower cases without any spaces in between.
    - Set wireless channel to 11
    - And wireless SSID broadcast should be Enabled and then click on save
    settings.
    Please make a note of Wireless Network Name (SSID) as this is the
    Network Identifier.
    For Wireless Security : -
    Now Click on the Sub tab under Wireless > Wireless Security.
    Change the Wireless security mode to WEP
    Encryption should be 64 bits.
    Leave the Pass phrase blank, don't type in anything.
    And under WEP Key 1 type in any 10 numbers please.Click on save
    settings.
    Please make a note of WEP Key 1 as this is the Security Key for the Wireless Network & you will be able to go Online Wirelessly!!!

  • How to update a large (over 4 million item) List(Of Byte) quickly by altering indexes contained in a Dictionary(Of Integer, Byte) where the Dictionaries keys are the indexes in the List(Of Byte) that need to be changed to the values for those indexes?

       I'm having some difficulty with transferring images from a UDP Client to a UDP Server. The issue is receiving the bytes necessary to update an original image sent from the Client to the Server and updating the Servers List(Of Byte) with the
    new bytes replacing bytes in that list. This is a simplex connection where the Sever receives and the Client sends to utilize the least amount of bandwidth for a "Remote Desktop" style application where the Server side needs image updates of whatever
    occurs on the Client desktop.
       So far I can tranfer images with no issue. The images can be be any image type (.Bmp, .Gif, .JPeg, .Png, etc). I was working with sending .JPeg's as they appear to be the smallest size image when a Bitmap is saved to a memory stream as type
    .JPeg. And then I am using GZip to compress that byte array again so it is much smaller. However on a loopback on my NIC the speed for sending a full size screen capture is not very fast as the Server updates fairly slowly unless the Clients screen capture
    Bitmap is reduced in size to about 1/3'd of the original size. Then about 12000 bytes or less are sent for each update.
       Due to .JPeg compression I suppose there is no way to get the difference in bytes between two .JPegs and only send those when something occurs on the desktop that alters the desktop screen capture image. Therefore I went to using .Bmp's as each
    .Bmp contains the same number of bytes in its array regardless of the image alterations on the desktop. So I suppose the difference in bytes from a second screen capture and an inital screen capture are what is different in the second image from the initial
    image.
       What I have done so far is save an initial Bitmap of a screen capture using a memory stream and saving as type .Bmp which takes less than 93 milliseconds for 4196406 bytes. Compressing that takes less than 118 milliseconds to 197325 bytes for
    the current windows on the desktop. When that is done PictureBox1 is updated from nothing to the captured image as the PictureBox's background image with image layout zoom and the PictureBox sized at 1/2 my screens width and 1/2 my screens height.
       Then I save a new Bitmap the same way which now contains different image information as the PictureBox is now displaying an image so its back color is no longer displayed (solid color Aqua) and the cursor has moved to a different location. The
    second Bitmap is also 4196406 in bytes and compressed it was 315473 bytes in size.
       I also just found code from this link Converting a Bitmap to a Byte Array (and Byte Array to Bitmap) which gets a byte array
    directly from a Bitmap and the size of that is 3148800 for whatever is full screen captured on my laptop. So I should be able to work with smaller byte arrays at some point.
       The issue I'm having is that once the Client sends an image of the desktop to the Server I only want to update the server with any differences occuring on the Clients desktop. So what I have done is compare the first screen captures bytes (stored
    in a List(Of Byte)) to the second screen captures bytes (stored in a List(Of Byte)) by using a For/Next for 0 to 4196405 where if a byte in the first screen captures List is not equal to a byte in the second screen captures List I add the index and byte of
    the second screen captures list to a Dictionary(Of Integer, Byte). The Dictionary then only contains the indexes and bytes that are different between the first screen capture and second screen capture. This takes about 125 milliseconds which I think is pretty
    fast for 4196406 byte comparison using a For/Next and adding all the different bytes and indexes for each byte to a Dictionary.
        The difference in Bytes between the inital screen capture and the second screen capture is 242587 as an example which changes of course. For that amount of bytes the Dictionary contains 242587 integers as indexes and 242587 bytes as different
    bytes totaling 485174 bytes for both arrays (keys, values).  Compressed the indexes go from 242587 to 43489 bytes and the values go from 242587 to 34982 bytes. Which means I will have to send 78, 481 bytes from the Client to the Server to update the display
    on the server. Quite smaller than the original 4196406 bytes of the second Bitmap saved to type .Bmp or the compressed size of that array which was 315473 bytes. Plus a few bytes I add as overhead so the server knows when an image array ends and how many packets
    were sent for the array so it can discard complete arrays if necessary since UDP is lossfull although probably not so much in current networks like it may originally have been when the internet started.
        In reality the data from the Client to the Server will mostly be the cursor as it moves and updating the Server image with only a few hundred bytes I would imagine at a time. Or when the cursor selects a Button for example and the Buttons
    color changes causing those differences in the original screen capture.
       But the problem is if I send the Dictionaries Indexes and Bytes to the Server then I need to update the original Bitmap List(Of Byte) on the server by removing the Bytes in the received informations Index locations array from the Servers Bitmap
    List(Of Byte) and replacing those Bytes with the Bytes in the received informations Byte array. This takes so long using a For/Next for however many indexes are in the received informations Index array to update the Bitmap List(Of Byte) on the server using
    "Bmp1Bytes.RemoveAt(Index As Integer)" followed by "Bmp1Bytes.Insert(Index As Integer, Item As Byte)" in the For/Next.
        I've tried various For/Next statements including using a new List(Of Byte) with If statements so If the the integer for the For/Next ='s the Key in a Dictionary(Of Integer, Byte) using a Counter to provide the Dictionaries Key value then
    the Dictionaries byte value will be added to the List(Of Byte) and the counter will increas by one Else the List(Of Byte) adds the original "Bmp1Bytes" byte at that index to the new List(Of Byte). This takes forever also.
       I also tried the same For/Next adding to a new Dictionary(Of Integer, Byte) but that takes forever too.
       I think I could use RemoveRange and AddRange to speed things up. But I don't know how to retrieve a contiguous range of indexes in the received indexes that need to be updated in the servers "Bmp1Bytes" List(Of Byte) from the received
    array of indexes and bytes which are in a Dictionary(Of Integer, Byte).  But I believe this would even be slower than some realistic method for replacing all Bytes in a List(Of Byte) when I have the indexes that need to be replaced and the bytes to replace
    them with.
       Even if I just used AddRange on a new List(Of Byte) to add ranges of bytes from the original "Bmp1Bytes" and the changes from the Dictionary(Of Integer, Byte) I think this would be rather slow. Although I don't know how to do that
    by getting contiguous ranges of indexes from the Dictionaries keys.
       So I was wondering if there is some method perhaps using Linq or IEnumerable which I've been unable to figure anything out which could do this.
       I do have some copy and pasted code which I don't understand how it works that I am using which I would guess could be altered for doing something like this but I can't find information that provides how the code works.  Or even if I did
    maybe I can't understand it. Like the code below which is extremely fast.
       Dim strArray() As String = Array.ConvertAll(Of Integer, String)(BmpComparisonDict.Keys.ToArray, Function(x) x.ToString())
    La vida loca

    Monkeyboy,
    That was quite a bit to read, but still a bit unclear. Could you put a specific list of goals/questions, asked in the smallest possible form?
    It seems like either you're making a program that monitors activity on your computer, or you're writing some kind of remote pc app.
    When you do get your bytes from using lockbits, keep in mind all the files header info would be lost. I think retaining the header info is worth the extra bytes.
    The other, thing: I'm not sure if you're taking 32bpp screen shots, but also keep in mind that the "whole desktop" is the final destination for blended graphics, if that makes sense. What I mean is that there is no need to capture an "alpha"
    channel for a desktop screenshot, as alpha would always be 255, this could save you 1 byte per pixel captured... Theres nothing "behind" the desktop, therefore no alpha, and every window shown above the desktop is already blended. I suggest using
    24Bpp for a full screen capture.
    Your X,Y information for the mouse could be stored as UINT16, this would save you a measly 2 bytes per location update/save.
    When you update your byte arrays, maybe you can turn the array into a stream and write to whatever index, however many bytes, that should prevent a "Shift" of bytes, and instead overwrite any bytes that "get in the way".
    ex
    Dim example As String = "This is an example."
    Dim insertString As String = "was"
    Dim insertBytes As Byte() = System.Text.Encoding.ASCII.GetBytes(insertString)
    Dim bytes As Byte() = System.Text.Encoding.ASCII.GetBytes(example)
    Dim modifiedBytes As Byte() = {}
    Using ms As New System.IO.MemoryStream(bytes)
    ms.Position = 5
    ms.Write(insertBytes, 0, 3)
    modifiedBytes = ms.ToArray
    End Using
    Dim newString As String = System.Text.Encoding.ASCII.GetString(modifiedBytes)
    'Notice how below there isn't the word "is" anymore, and that there isn't a
    'space.
    'This demonstrates that you overwrite existing data, versus shifting everything to
    'the right.
    'Returns: This wasan example.
    MsgBox(newString)
    “If you want something you've never had, you need to do something you've never done.”
    Don't forget to mark
    helpful posts and answers
    ! Answer an interesting question? Write a
    new article
    about it! My Articles
    *This post does not reflect the opinion of Microsoft, or its employees.
    Well it's too much to read. I was really tired when I wrote it. Even the below is too much to read but perhaps gets the point across of what I would like to do which I think
    Joel Engineer may have answered but I'm not sure. As I'm still too tired to understand that yet and research what he said in order to figure it out yet.
    But maybe the code below can provide the concept of the operation with the comments in it. But seeing as how I'm still tired it may be confused.
    Option Strict On
    Imports System.Windows.Forms
    Imports System.IO
    Imports System.IO.Compression
    Imports System.Drawing.Imaging
    Imports System.Runtime.InteropServices
    Public Class Form1
    Dim Bmp1Bytes As New List(Of Byte)
    Dim Bmp1BytesCompressed As New List(Of Byte)
    Dim Bmp2Bytes As New List(Of Byte)
    Dim BmpComparisonDict As New Dictionary(Of Integer, Byte)
    Dim BmpDifferenceIndexesCompressed As New List(Of Byte)
    Dim BmpDifferenceBytesCompressed As New List(Of Byte)
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    SomeSub()
    End Sub
    Private Sub SomeSub()
    ' Pretend this code is in UDP Client app. A screen capture is performed of the desktop. Takes about 90 milliseconds.
    Bmp1Bytes.Clear()
    Using BMP1 As New Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height)
    Using g1 As Graphics = Graphics.FromImage(BMP1)
    g1.CopyFromScreen(0, 0, 0, 0, BMP1.Size)
    Cursor.Draw(g1, New Rectangle(Cursor.Position.X, Cursor.Position.Y, Cursor.Size.Width, Cursor.Size.Height))
    Using MS As New MemoryStream
    BMP1.Save(MS, System.Drawing.Imaging.ImageFormat.Bmp)
    Bmp1Bytes.AddRange(MS.ToArray)
    End Using
    End Using
    End Using
    Bmp1BytesCompressed.AddRange(Compress(Bmp1Bytes.ToArray))
    ' UDP Client app sends Bmp1BytesCompressed.ToArray to UDP Server which is the entire image of the desktop that the UDP
    ' Client is on. This image takes awhile to send since compressed it is about 177000 bytes from over 4000000 bytes.
    ' I will be using different code just to get the bytes from the actual Bitmap in the future. That is not important for now.
    ' Pretend the UDP Server has received the bytes, decompressed the array received into a List(Of Byte) and is displaying
    ' the image of the UDP Clients desktop in a PictureBox.
    ' Now the image on the UDP Clients desktop changes due to the mouse cursor moving as an example. Therefore a new Bitmap
    ' is created from a screen capture. This takes about 90 milliseconds.
    Bmp2Bytes.Clear()
    Using BMP2 As New Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height)
    Using g1 As Graphics = Graphics.FromImage(BMP2)
    g1.CopyFromScreen(0, 0, 0, 0, BMP2.Size)
    Cursor.Draw(g1, New Rectangle(Cursor.Position.X, Cursor.Position.Y, Cursor.Size.Width, Cursor.Size.Height))
    Using MS As New MemoryStream
    BMP2.Save(MS, System.Drawing.Imaging.ImageFormat.Bmp)
    Bmp2Bytes.AddRange(MS.ToArray)
    End Using
    End Using
    End Using
    ' Now I have the original images bytes in Bmp1Bytes and the new images bytes in Bmp2Bytes on the UDP Client. But I don't
    ' want to send all of the bytes in Bmp2Bytes to the UDP Server. Just the indexes of and the bytes that are different in
    ' Bmp2Bytes from Bmp1Bytes.
    ' This takes less than 100 milliseconds for what I've tested so far where over 500000 bytes in Bmp2Bytes are different
    ' than the bytes in Bmp1Bytes. Usually that amount would be much less. But during testing I was displaying the image
    ' from Bmp1 bytes in a PictureBox so a large amount of data would change between the first screen shot, the PictureBox
    ' then displaying an image on the same PC and then the second screen shot.
    BmpComparisonDict.Clear()
    For i = 0 To Bmp1Bytes.Count - 1
    If Bmp1Bytes(i) <> Bmp2Bytes(i) Then
    BmpComparisonDict.Add(i, Bmp2Bytes(i))
    End If
    Next
    ' So now I have all the difference bytes and their indexes from Bmp2Bytes in the BmpComparisonDict. So I compress
    ' the indexes into on List and the Bytes into another List.
    BmpDifferenceIndexesCompressed.Clear()
    BmpDifferenceBytesCompressed.Clear()
    BmpDifferenceIndexesCompressed.AddRange(Compress(BmpComparisonDict.Keys.SelectMany(Function(d) BitConverter.GetBytes(d)).ToArray()))
    BmpDifferenceBytesCompressed.AddRange(Compress(BmpComparisonDict.Values.ToArray))
    ' Now pretend the UDP Client has sent both those arrays to the UDP Server which has added both decompressed arrays
    ' to a Dictionary(Of Integer, Byte). And the server has the original image decompressed bytes received in a List
    ' called Bmp1Bytes also.
    ' This is where I am stuck. The UDP Server has the Dictionary. That part was fast. However there is no
    ' fast method I have found for creating a new List(Of Byte) where bytes in the originally received List(Of Byte) that
    ' do not have to be altered are placed into a new List(Of Byte) except for the indexes listed in the
    ' Dictionary(Of Integer, Byte) that need to be placed into the appropriate index locations of the new List(Of Byte).
    ' The below example for doing so is exceptionally slow. Pretend UpdateDictionary has all of the decompressed indexes
    ' and bytes received by the UDP Server for the update contained within it.
    Dim UpdateDictionary As New Dictionary(Of Integer, Byte)
    Dim UpdatedBytes As New List(Of Byte)
    Dim Counter As Integer = 0
    For i = 0 To Bmp1Bytes.Count - 1
    If i = UpdateDictionary.Keys(Counter) Then ' Provides the index contained in the Keys for the Dictionary
    UpdatedBytes.Add(UpdateDictionary.Values(Counter))
    Counter += 1
    If Counter > UpdateDictionary.Count - 1 Then Counter = 0
    Else
    UpdatedBytes.Add(Bmp1Bytes(i))
    End If
    Next
    ' So what I'm trying to do is find an extremely fast method for performing something similar to what the
    ' above operation performs.
    End Sub
    Private Function Compress(BytesToCompress() As Byte) As List(Of Byte)
    Dim BytesCompressed As New List(Of Byte)
    Using compressedStream = New MemoryStream()
    Using zipStream = New GZipStream(compressedStream, CompressionMode.Compress)
    zipStream.Write(BytesToCompress, 0, BytesToCompress.Count)
    zipStream.Close()
    BytesCompressed.AddRange(compressedStream.ToArray)
    End Using
    End Using
    Return BytesCompressed
    End Function
    Private Function Decompress(BytesToDecompress() As Byte) As List(Of Byte)
    Dim BytesDecompressed As New List(Of Byte)
    Using DecompressedStream = New MemoryStream()
    Using zipStream = New GZipStream(DecompressedStream, CompressionMode.Decompress)
    zipStream.Write(BytesToDecompress, 0, BytesToDecompress.Count)
    zipStream.Close()
    BytesDecompressed.AddRange(DecompressedStream.ToArray)
    End Using
    End Using
    Return BytesDecompressed
    End Function
    End Class
    La vida loca

Maybe you are looking for