Tudo o que Você Sempre Quis Saber Sobre Escrever Scripts de JAWS, Mas não Soube Quem Perguntar Por Kenneth A. Gould Registre 2000 por Liberdade o Inc. Científico, todos os direitos reservados Prefacie A versão de Microsoft Word deste manual foi fixa para cima assim você pode saltar diretamente a qualquer seção mostrado no Índice. Para fazer isto, pode fazer tique-taque você em qualquer lugar na linha apropriada no Índice, ou na própria entrada ou no número de página à direita de cada entrada. Um modo para realizar isto com o teclado é como segue: 1. Ache a seção de interesse no Índice movendo lá com o cursor de PC. 2. Dirija o cursor de JAWS ao cursor de PC. 3. Clique o botão de rato esquerdo apertando NUM BLOCO GOLPE. Você saltará então automaticamente à página de interesse. Este manual também contém cruz-referências de hyperlinked a seções que estão na forma Veja Seção X onde X é o número de seção de hyperlinked. Você pode saltar diretamente para a seção fazendo tique-taque na referência de número de seção com o cursor de JAWS. Depois do ler para a seção saltou, você pode voltar a sua posição original no Índice ou para sua cruz-referência original a qualquer hora apertando SETA de ALT+LEFT. Este manual foi atualizado para versão 3.7 de JAWS. Índice 1 INTRODUÇÃO 7 1.1 o que é Scripts? 7 1.2 scripts contra Funções 8 1.3 constantes e Variáveis 10 1.4 estrutura de Manual 12 SEPARE EU: SIDO COMEÇADO COM MANUSCRITOS 2 MANUSCRITOS: Uma AVALIAÇÃO 15 BREVE 2.1 o que é Arquivos de script? 15 2.2 o que é o Gerente de script? 18 2.3 anatomia de um script 19 3 NOSSOS PRIMEIROS MANUSCRITOS 21 4 O MANUSCRITO GERENTE 27 4.1 os Cardápios 27 4.2 Arquivo de Gerente de script Digita 27 4.3 incluem Declarações 28 4.4 o script Novo e Informação de script Dialoga 29 4.4.1 Aba 29 geral 4.4.2 parâmetros Aba 31 4.5 a Função de Suplemento e Suplemento PerformScript Dialogs 32 5 MANUSCRITOS 35 SIMPLES CRIANDO 5.1 script Documentação 35 5.2 script individual Estrutura 35 5.3 script usando Funciona 36 5.3.1 leitura Texto 36 5.3.2 que se mudam a Tela 38 Ao redor 5.3.3 Leitura criando Scripts 42 5.4 que reúnem Tudo 44 SEPARE II: ARQUIVOS DE MANUSCRITO AVANÇADOS CRIANDO 6 JANELAS PROGRAMAM ESTRUTURA 50 6.1 hierarquia 50 6.2 Windows 52 identificando 6.2.1 janela Classifica, Tipos, Códigos de Tipo, e Subtipo Codifica 52 6.2.2 controle ID e Janela Controla 54 7 BLOCOS de EDIFÍCIO DO MANUSCRITO IDIOMA 57 7.1 o script 57 7.2 a Função 58 7.3 tipos de Declarações 59 7.3.1 comentários 59 7.3.2 incluem 60 7.3.3 variáveis 61 7.3.4 constantes 65 7.3.5 Funções embutidas e Operadores 65 7.3.5.1 Funções 66 embutidas 7.3.5.2 o GetCurrentWindow e GetFocus Functions 67 7.3.5.3 a Pausa e Demora Funções 69 7.3.5.4 uma Palavra Sobre SDM Windows 69 7.3.5.5 aritmética Operadores 71 7.3.5.6 Operadores 71 lógicos 7.3.5.7 Bitwise operadores 73 7.3.5.8 gancho Funções 74 7.3.5.9 introdução para script que Escreve Com Microsoft Objects 77 7.4 Fluxo 85 controlando 7.4.1 seqüente 86 7.4.2 seleção (Condicional) 86 7.4.3 Iterative 89 7.5 Funções 91 usuário-definidas 7.5.1 Funções 91 simples 7.5.2 funções Que Requerem Parâmetros 94 7.5.3 funções Que Provêem Devolvem 98 7.5.4 evento Funciona 100 7.5.4.1 lista de Evento Funções 105 8 MANUSCRITO que ESCREVE TÉCNICAS 111 8.1 explorando a Aplicação Com a Utilidade Funciona 111 8.2 Informações de Janela de obtenção Com o ScreenSensitiveHelpTechnical script 114 8.3 Arquivo de script Digita 114 8.3.1 fonte Arquiva 114 8.3.2 Arquivos 116 compilados 8.3.3 incluem Arquiva 116 8.4 Variáveis 117 usando 8.4.1 Convenções 117 nomeando 8.4.2 declaração Colocação 118 8.4.3 Variáveis 118 Globais usando 8.5 Constantes 119 usando 8.6 Funções 123 Múltiplas usando 8.6.1 Funções usando Consecutivamente 123 8.6.2 Funções 124 Aninhadas usando 8.7 selecionando e Manipulando Cursores 125 8.8 que enviam uma Batida de tecla 129 8.9 fabricação Seus Scripts Compatível Com Verbosidade de Costume Nivela 129 8.10 Documentação 130 sincronizando 9 DEPURAÇÃO 132 9.1 o script de JAWS Compilador 132 9.2 Atividade 133 errônea 10 ESTRATÉGIAS POR ATACAR APLICAÇÕES 136 NOVAS 11 DIRETRIZES POR CRIAR MANUSCRITO de DISTRIBUIÇÃO ARQUIVAM 137 12 MACRO CONVERTENDO ARQUIVA 138 13 RECONHECIMENTOS 140 14 APÊNDICE UM - RESPOSTAS PARA LIÇÕES DE CASA 141 14.1 resposta para Lição de casa #1 141 14.2 resposta para Lição de casa #2 141 14.3 resposta para Lição de casa #3 142 14.4 resposta para Lição de casa #4 143 14.5 resposta para Lição de casa #5 143 14.6 resposta para Lição de casa #6 144 14.7 resposta para Lição de casa #7 146 14.8 resposta para Lição de casa #8 146 14.9 resposta para Lição de casa #9 147 14.10 resposta para Lição de casa #10 147 15 APÊNDICE B - DESCRIÇÃO DO MANUSCRITO GERENTE CARDÁPIOS 150 15.1 arquivo Cardápio 150 15.2 editam Cardápio 150 15.3 script Cardápio 151 15.4 visão Cardápio 151 15.5 janela Cardápio 151 15.6 ajuda Cardápio 152 16 APÊNDICE C - AS FUNÇÕES 153 EMBUTIDAS mais IMPORTANTES 17 APÊNDICE D - FUNÇÕES EMBUTIDAS IMPORTANTES ORGANIZADAS POR TAREFA 181 17.1 cursor 181 17.2 posicionamento 182 17.3 Processo condicional e Dando laçada 183 17.4 dizem 183 17.5 fio e Inteireza Manipulação 184 17.6 aplicação 185 17.7 braile 185 17.8 rato 186 17.9 achado 186 17.10 Windows e Contesta 186 17.11 moldam 188 17.12 scripts 189 17.13 SDM 189 17.14 oração Nível 189 17.15 opções 190 17.16 Atividades 190 de sistema 17.17 colorem 191 17.18 controle Sintetizador 191 18 APÊNDICE E - COMO PARA EXTENSÃO FORA E PERSONALIZA UMA APLICAÇÃO 193 DESCONHECIDA 1 introdução 1.1 o que é Scripts? Em primeiro lugar, partamos com algumas definições. O que é de qualquer maneira um script? Quando você executar um trtablho em um computador, normalmente envolve vários passos. Você possa ter que apertar várias chaves para o adquirir parte de um programa à direita fazer um trtablho, ou você possa ter que apertar várias chaves para abrir o programa até mesmo você quer uso. Então, uma vez você é onde você quer ser, você pode ter que apertar vários mais chaves entrar nos dados você quer. Por exemplo, você poderia estar em um processador de textos e quer digitar seu endereço de retorno ao topo de uma carta. Esta poderia se tornar uma tarefa tediosa se você tem que fazer muito isto, assim não vai isto é agradável se você pudesse ter o endereço de retorno inteiro digitou fora para você com uma batida de tecla? Isso é exatamente o tipo de coisa que um script pode fazer. Um script é um tipo de programa de computação de míni que combina muitos passos ou batidas de tecla em uma operação que você pode ativar depressa e simplesmente. Bem, pelo menos isso é um tipo de script. JAWS e outro computador aplicações usam scripts todo o tempo, e obviamente eles sempre não estão sendo usados para digitar fora endereços de retorno. Assim, mais globalmente, scripts são sucessões de passos individuais que podem ser usados ativar e controlar uma variedade larga de processos de computador de coisas tão simples quanto entrando em fios repetitivos de dados para muitos das coisas seu computador faz em uma base contínua como parte de sua operação. É este tipo de função que nós vamos ser interessados com neste manual. Enquanto você pode usar o que você aprenderá aqui para criar um script de endereço de retorno certamente, você também aprenderá a controlar JAWS de modos que farão isto se comporte mais como você desejaria. Muitos aspectos de controle de computador para o qual nós levamos concedidos estão de fato debaixo do controle de scripts. Nós não pensamos de fato neles como scripts desde que eles são codificado como parte da programação interna da aplicação. Por exemplo, quando você usa que movimento de cursor tecla ou chama uma caixa de diálogo em Microsoft Word com uma chave quente, você está invocando uma parte do programa que executa umas séries de operações ou passos de fato. Por nossa definição, este é um script. JAWS usam muitos tipos diferentes de scripts que contam isto o que fazer em certas situações ou quando você bateu certas chaves. O que faz para JAWS tal um programa imensamente poderoso é que os desenhistas decidiu não esconder esses scripts fora como parte do programa principal e, assim, os faça inacessível para o usuário. Se eles tivessem feito isto, então JAWS seriam um longe ferramenta menos flexível e seria muito menos adaptável para as necessidades de aplicações incomuns. Os desenhistas de JAWS tomaram a decisão consciente para o deixar escrever seu próprios scripts para um propósito particular e o deixar ver e modifica os scripts de falta individuais que controlam muitos aspectos do desempenho do programa. Os modificaram ou recentemente-escrito scripts são então organizados em arquivos de script individuais como os quais têm o mesmo nome (mas uma extensão diferente de) a aplicação para qual eles foi criado. Acesso para os scripts que controlam JAWS a maioria que foi provido comportamento fundamental por duas razões muito boas. Primeiro, todo usuário quer ser capaz personalizar o programa para se comportar da mesma maneira que ele ou ela gostariam. Segundo, enquanto os desenhistas de JAWS se anteciparam muitas das situações de leitura de tela que acontecerá com aplicações diferentes, é impossível prever toda organização de tela estranha ou sem padrão que os programadores do mundo proporão. Você tenha um arsenal poderoso de comandos de script que você pode aplicar à conquista destas aplicações extraordinariamente-projetadas à sua disposição. Tudo você tem que fazer é aprenda a os usar. A propósito, sempre não é necessário usar um script para personalizar JAWS. Por exemplo, a pessoa pode fazer certas partes da tela falar ou estar calado usando as armações que podem ser criadas com o Gerente de Armação. Com o passar do tempo, haverá mais características seguramente como isto acrescentado a JAWS que lhe permitirão fazer mais customization sem recorrer a scripts. Mas sempre haverá situações muito estranho ou enrolado para qualquer coisa mas um script bem-escrito contenderem com. Se lembre que depois que você aprendesse a usar o idioma de script de JAWS que você tem uma ferramenta muito poderosa que é muito mais incisivo que qualquer característica simples pode ser. Assim, você provavelmente está, o que é a diferença entre um macro e um script, se perguntando agora? Bem, em uma palavra, há realmente nem toda diferença. Scripts são macros, e isso é há a isto. Não deixe o jargão o confundir. Nós os chamaremos scripts de agora em diante, mas "UMA rosa por qualquer outro nome", etc., etc. 1.2 scripts contra Funções Scripts de JAWS podem ser divididos em duas categorias principais. Esses que são ativados por uma batida de tecla são chamados scripts, e esses que são não são chamados funções. Primeiro falemos sobre os scripts de batida de tecla. Como faz JAWS sabem que deveria ler a linha nova de texto quando você está em um processador de textos e bateu o TABIXE SETA chave? Bem, sabe isto porque há um script no arquivo de script de JAWS principal (chamou o arquivo de script de Falta) que é amarrado ou "saltou" o TABIXE chave de SETA e conta para JAWS ler a linha nova. Este script particular tem o nome "SayNextLine" e é ativado quando você bateu o TABIXE chave de SETA. Este script é razoavelmente complicou porque tem que analisar onde você é e o que você está fazendo quando você bateu o TABIXE chave de SETA. Conferirá para ver que tipo de janela é você dentro quando você bateu o TABIXE chave de SETA, e, se você estiver em uma janela de texto de processador de textos, falará a linha para a qual você move. Há uma linha neste arquivo de script isso lê "SayLine () " e é ativado depois que seu cursor passar para a próxima linha. Esta é a linha do script que de fato executa a função que leituras a linha. Há um script semelhante chamado "SayPriorLine" que é ativado quando você bateu o PARA CIMA chave de SETA. Este script usa a mesma função de "SayLine" como parte de sua codificação. Quando você bateu que a SETA CERTA e ESQUERDA tecla, são ativados dois outros scripts, "SayNextCharacter" e "SayPriorCharacter." Estes scripts usam uma função chamada "SayCharacter" como parte da codificação deles/delas falar o caráter novo depois que seu cursor passe para isto. Há outros scripts chave-encadernados projetados operar quando muitas das outras chaves em seu teclado são apertados. Estes scripts analisam a situação atual e tentam executar uma ação apropriado para isso situação. Se a situação é muito incomum e não foi antecipado pelos desenhistas de JAWS, então isso é quando você puder ter que fazer algumas modificações para fazer executa como exigido. São chamados os scripts que não são ligados ou ativaram através de batidas de tecla funções. Considerando que estas funções não podem ser ativadas por uma batida de tecla, eles devem ser utilizados de outros modos. Funções também diferem de scripts de chave-salto nisso que eles devolvem para um pouco de informação depois que eles terminam de executar, considerando que scripts de chave-salto nunca fazem. Uma vez mais, não deixe a neve de jargão você. Uma função é há pouco um script que não é amarrado a uma batida de tecla particular e que devolve um pouco de informação quando for feito executando. Por que é este terminado? Há duas razões muito boas. Primeiro, algumas funções operam automaticamente quando certos eventos acontecerem. Então, há nenhuma necessidade para ter tais funções amarrou a batidas de tecla porque não é uma batida de tecla que os ativa. Segundo, às vezes um jogo de declarações de scripting muito geralmente é aplicável a muitas situações e pode ser usado inúmeras vezes. Em vez de escrever fora este jogo de declarações para todo script que precisa isto, pode ser colocado em uma função que pode ser utilizada ou pode "ser chamada" por qualquer outro script que precisa isto. Assim, são subdivididas funções em duas categorias, o ones que ativa automaticamente quando certas coisas acontecem e esses que só são ativados quando eles são "chamado" por outro script. O primeiro tipo é chamado uma função de evento porque corre automaticamente quando certos eventos de sistemas acontecerem. Por exemplo, o NewTextEvent função é chamada quando qualquer texto novo é escrito à tela, e a função de BottomEdgeEvent é chamada quando o cursor alcançar o fundo de uma janela. Sem a função de NewTextEvent, nada seria falado automaticamente através de JAWS quando informações se apareceram em sua tela, e sem o BottomEdgeEvent funcione, seu PC nem buzinaria nem fala uma mensagem de advertência quando o cursor de JAWS alcançou o fundo de uma janela. O segundo tipo de função, o tipo não chamado automaticamente por certas situações de Windows, não tem nenhum nome especial (acredite ou não) assim nós chamaremos há pouco isto uma função. Estas funções claras só operam quando eles são chamados por outro script ou função. Isto é terminado colocando o nome da função dentro de outro script ou função. Se você faz isto, então quando o script adquire à linha que tem o nome daquela função, causará aquela função para ser corrido. Este processo é termed que "chama" uma função. Sim, eu sei, mais use jargão, mas você há pouco terá que se acostumar a isto. Chamando uma função significa, bastante simplesmente, colocando o nome daquela função em outro script assim será executado no momento apropriado. Por exemplo, a função de NewTextEvent mencionada acima tem uma linha nisto isso lê "SayNonHighlightedText () ". Se a função de NewTextEvent analisou o texto novo escrito à tela e decidiu que é controlado corretamente pela função de SayNonHighlightedText, se passará o trtablho àquela função chamando isto e então deixou isto falar o texto para você. Por outro lado, se a função de NewTextEvent decide que a informação de tela é realçada texto, então, chamará uma função diferente nomeada "SayHighlightedText" ao invés, e deixará aquela função fazer a oração para você. Decisões, decisões, decisões. Bem, isso é que scripts fazem. Eles analisam o que vai em e toma uma decisão aproximadamente como controlar a leitura de tela para você. Se eles não fazem isto corrija, seu trtablho é modificar o script pertinente assim faz isto corrija. A propósito, você poderia ter notado que havia uma esquerda e parêntese de direito depois que o nome de função sobre o que SayNonHighlightedText mencionou. Estes parênteses sempre é requerido ao chamar uma função dentro de um script. Às vezes é colocada informação entre estes parênteses, mas isso é algo que nós falaremos quase depois. (Veja Capítulo 7.5.2.) A planície-Jane, funções de non-evento são divididas mais adiante em dois tipos. O primeiro tipo é a lista de mais de duzentas funções para as quais estão disponível para você use no idioma de script de JAWS. Estas funções são chamadas funções "embutidas" e são duro-codificadas em JAWS. Você pode os chamar ao criar scripts, mas você não os pode mudar. O segundo tipo de função clara é o presente de tipo no script arquiva, qualquer um criado pelos desenhistas de JAWS ou somou por um usuário. Estes são funções usuário-definidas chamadas. Depois que estas funções foram criadas, eles também se aparecerão na lista de função para você usar dentro dos scripts você cria. Obviamente, a diferença principal entre estes e as funções duro-codificadas são que estes podem ser modificados por um usuário, se necessário. 1.3 constantes e Variáveis Nós precisamos introduzir duas outras condições antes de entrar de fato em escritura de script. Eles são "variáveis" e "constantes." Uma variável é uma palavra de um ou mais cartas que pode ser usado para armazenar um valor que é determinado durante o processo de scripts. Este valor não é conhecido freqüentemente com antecedência e pode mudar um ou mais vezes durante processo de script. É nomeado o valor que é determinado à variável durante o curso da operação do script, e a variável mantém isso avalie até e a menos que seja mudado por outra operação de script. Pode ser usado o valor desta variável para tomar decisões por aquele script ou outro script. Para exemplo, na declaração Deixou X = 1, X é a variável, e nós estamos nomeando um valor de 1 a isto. X tem o valor de 1 até e a menos que nós mudemos isto a algo outro ou a operação do script muda isto para nós. A propósito, este é o tipo de declaração de script nós usamos para nomear um valor manualmente a uma variável. No curso de correr um script particular, nós podemos ter declarações que fazem uma coisa se X iguala 1, mas faz qualquer outra coisa se X tiver um valor diferente. Mais adiante, o valor sendo acontecidos por X poderiam representar o tipo de janela no que nós somos atualmente, say um botão, um edite campo, ou uma caixa de lista. X teria um valor diferente por cada destes tipos de janelas, e nosso script poderia precisar executar operações diferentes que dependem de que tipo de janela nós estávamos dentro e, então, que valor foi nomeado X. Se nosso script tivesse a capacidade de olhar no sistema operacional de Windows e determinar que que tipo de janela éramos nós dentro, o script poderia nomear então o valor apropriado para X e o script poderia continuar seu processo então, enquanto decidindo o qual de vários cursos de ação executar baseado no valor (i.e., tipo de janela) sendo armazenado na variável. JAWS têm esta capacidade para olhar no sistema operacional de Windows nesta moda, e este tipo de decisão fundou no tipo de janela atual está exatamente o tipo de decisão-fazer sendo executado continuamente através de JAWS. O da próxima vez aquele mesmo script corre, nós podemos estar dentro um diferente janela, e o variável vá, então, tenha um valor diferente armazenado nisto. O script decidiria fazer algo bastante diferente então, a ação apropriado para aquele tipo de janela. Novamente, scripts têm que tomar freqüentemente decisões, e o valor armazenou em uma variável é um modo eles podem decidir o que fazer logo. Constantes são uma real questão diferente porque, como insinua o nome deles/delas, eles não mudam o valor deles/delas. Uma vez um valor é nomeado a uma constante, fica que modo. Isto pode parecer ser um desperdício bastante estranho de tempo, mas é realmente bastante conveniente. Constantes são um modo de usar nomes facilmente-se lembrados armazenar duro-para-se lembram fios de cartas ou números. Por exemplo, saymos nosso amigo o José tem uma previdência social número 589-43-3894. Mais adiante, saymos nós temos que trtablhar com dez pessoas, cada com o dele ou o próprio número de previdência social dela. Nós poderíamos fazer uma constante chamada JoeSocSecNum e então lugar o número de previdência social de José naquela constante usando a equação JoeSocSecNum = 589433894. Nós poderíamos fazer algo semelhante com cada das outras pessoas e o dele ou o número de previdência social dela. Então, quando nós quisemos imprimir o número de previdência social de uma pessoa, tudo nós teríamos que fazer é pedir para o programa imprimir o valor do número de previdência social de cada pessoa constante. Desde que JoeSocSecNum é muito mais fácil se lembrar que 589-43-3894, nós fizemos muito vida mais fácil em nós mesmos usando uma constante em vez de tentar se lembrar um longo número. JAWS fazem muito este tipo de coisa, e isso é o que nós queremos dizer quando nós falarmos sobre constantes no contexto do idioma de scripting de JAWS. No caso de você ainda está um pequeno confuso sobre variáveis e constantes, usemos outra analogia que poderia ajudar os clarifique um pequeno mais. Nós estamos todo familiarizados com telefones de toque-tom que usam um teclado complementar numérico de botões que nós apertamos para discar um número de telefone. Além dos números zere por nove e um par de símbolos, alguns telefones têm alguns botões programáveis adicionais que podem ser usados para armazenar números de telefone inteiros que nós freqüentemente chamamos. A pessoa pode, para exemplo, armazena o número de vendas do vendedor de software favorito dele em um desses botões assim ele pudesse chamar para fazer um pedido sem ter que observar depressa o número. Agora, os botões que contêm os números zeram por nove poderia ser considerado como constantes desde os números eles nunca contêm mudança. O primeiro botão na fila de topo está sempre um um, assim é uma constante. Porém, os botões programáveis podem ser mudados para conter números novos à vontade. Por exemplo, você pode tenha que mudar o botão de vendedor de software a um número de telefone novo se a companhia movesse a um endereço novo. Desde que estes botões programáveis podem ser mudados à vontade, elas são muito mais iguais variáveis, e eles podem ser alterados para conter a informação nós a maioria precisa em qualquer determinado momento. Variáveis em scripts são iguais que, também. Eles podem ser mudados como precisado, ou pelo usuário ou automaticamente por um script, dependendo de circunstâncias. 1.4 estrutura de Manual Como mencionamos nós são organizados anteriores, individuais scripts de JAWS em arquivos chamado arquivos de script. Este manual contém tudo da informação você precisará escrever seu próprios scripts e os organiza em arquivos que serão usados toda vez por seu computador você corridos uma aplicação. O seguinte é uma lista dos capítulos restantes deste manual com uma descrição breve do que cada contém. Separe eu: Sido Começado Com Scripts * Capítulo 2 - "Scripts: Uma Avaliação Breve" provê um entendendo largo, geral de como scripts e a JAWS script Gerente função. A diferença entre o falta e script de aplicação arquiva e como eles trtablham junto também está coberto. "Anatomia de um script" dá uma introdução breve à forma que um script leva assim você pode entender melhor a construção de "nossos Primeiros Scripts" no próximo capítulo. * Capítulo 3 - "Nossos Primeiros Scripts" em ajudas você para criar dois scripts simples, os compile, e os carregue de forma que você pode ganhar uma pouca confiança. * Capítulo 4 - "O Gerente de script" provê um a fundo excursão do Gerente de script e tudo de suas ferramentas por criar scripts e arquivos de script. * Capítulo 5 - "Criando Scripts Simples" ensina script que escreve em uma balança pequena. É planejado para esses que querem beliscar os scripts existentes e criar scripts ler informação textual da tela. Separe II: Arquivos de script Avançados criando * Capítulo 6 - "Windows Programa Estrutura" coberturas os vários identificadores classificavam e diferenciavam entre as muitos janelas achadas em programas de Windows. Isto também coberturas como são organizadas janelas em uma ordem hierárquica. * Capítulo 7 - "Construindo Blocos do "Idioma de script provê detalhes no indivíduo constrói isso componha scripts. Isto é onde nós começamos a pôr coisas junto isso se tornará scripts. Nós também olharemos a quando e como usar as várias funções. * Capítulo 8 - "script que Escreve para Técnicas" começos que põem tudo isso informação usar. Provê as técnicas usadas por escrito scripts avançados. * Capítulo 9 - "Depurando" coberturas como trtablhar fora os bichos em seus scripts junto com algumas gorjetas que ajudam com o processo. * Capítulo 10 - "Estratégias por Atacar Aplicações Novas" dão idéias em como chegar o problema de analisar e scripting uma aplicação nova. * Capítulo 11 - "Diretrizes por Criar "Arquivos de script de Distribuição listas várias regras indicadas observar para esses criando arquivos de script. * Capítulo 12 - "Convertendo "Arquivos de Macro descreve o processo de converter macro arquiva escrito para versões de JAWS para Windows antes de versão 3into arquivos de script aquele trtablho com a versão atual. Separe eu: Sido Começado Com Scripts 2 scripts: Uma Avaliação Breve Suponha você está usando um programa de aplicação que provê uma descrição de cada artigo de cardápio ao fundo de sua janela. Um usuário perspicaz há pouco olharia até veja aquela informação sempre que o propósito daquele artigo de particular estava obscuro. Seguramente, você poderia virar no Cursor de JAWS, vá para o fundo da janela e leitura a linha, mas não seria mais fácil se você pudesse apertar há pouco uma chave quente para ler o texto de ajuda? Ou até melhor, como sobre se JAWS pudessem ler isto automaticamente? E, claro que, você quereria poder virar aquela leitura automática de tempo em tempo. Bem, se esta aplicação que você está usando tido um arquivo de script escrito para isto, e se isto arquivo de script conteve um script para fazer estas coisas para você, você poderia então ter este tipo de acesso conveniente. Se ninguém mais tivesse criado este especial script para você, você poderia criar isto você então, contanto você aprendeu a usar o idioma de script de JAWS para construir seus próprios scripts. Isto melhorou acesso ajude trazer a eficiência de usar este programa até isso de uma pessoa perspicaz, e melhoraria sua produtividade. 2.1 o que é Arquivos de script? JAWS sempre estão debaixo do controle de scripts. Como nós discutimos acima, um script é um programa de computação pequeno que modifica as JAWS de modo executa para uma situação específica. Arquivos de script de JAWS são coleções de scripts individuais que especificamente estão carregado para uso com uma determinada aplicação de Windows. Estes arquivos de script estão automaticamente carregados através de JAWS sempre que você entra em uma aplicação nova. É importante entender que haja dois tipos de arquivos de script: falta e aplicação. Você pode pensar de script arquiva como "empilhado" em um tipo de pilha, com a falta no fundo da pilha. O arquivo de script de falta está carregado quando começos de JAWS e sempre é ativo em todas as sessões. Um arquivo de script de aplicação é empilhado em cima da falta quando suas cargas de aplicação. JAWS sabem carregar o arquivo de script de aplicação em cima da pilha porque a parte principal do aplicação script arquivo nome (i.e., a parte sem a extensão) está igual ao nome de programa de aplicação. Assim, nosso arquivo de script de falta é nomeado DEFAULT.JSS, e uma aplicação nomeada SPREADSHEET.EXE teria um arquivo de script chamado SPREADSHEET.JSS. Quando você deixa este particular aplicação, o arquivo de script específico isto serão descarregados usos, e todos os scripts de falta serão novamente ativos até que o arquivo de script de outra aplicação está carregado. O arquivo de script de falta que está carregado quando você primeiro JAWS de começo contêm centenas de scripts. Estes scripts dão para JAWS tudo da informação que precisa prover própria voz produziu em a maioria das situações. Este arquivo conta para JAWS o que falar e quando falar isto em a maioria das circunstâncias ao correr aplicações bem-educadas. Em porém, muitas aplicações há situações que divergem do normal. Também pode haver exemplos particulares quando leitura feito sob encomenda da tela for requerido. Se estes acontecem que pode ser necessário há pouco criar um arquivo de script para esta aplicação. Se tal um arquivo de script foi criado e foi existido no subdiretório de JAWS que contém a configuração de JAWS arquiva, então também será carregado quando aquela aplicação é corrida. Este arquivo de script é o primeiro para o que é olhado quando uma batida de tecla particular é usada ou quando uma situação acontece que precisa chamar um das funções de evento descrito mais cedo. (Veja Capítulo 1.2.) Se a aplicação arquivo de script não contém um script pertinente para a situação, então JAWS olharão no arquivo de falta. Se o script é achado em um destes dois lugares, isto, será executado assim que seja achado, e nenhum mais adiante processo é requerido. SE nenhum script é achado em qualquer local, então JAWS se passarão a batida de tecla para a aplicação, e aquela batida de tecla será executada da mesma maneira que se JAWS não fossem correntes. Esta hierarquia é muito importante. Se um script particular que existe no arquivo de falta não é apropriado para a aplicação que é usado, o usuário pode colocar uma versão feito sob encomenda daquele script no arquivo de script da aplicação, e aquela versão será usada em preferência ao um presente no arquivo de falta. Desde scripts mais alto para cima na precedência de objeto pegado de pilha, um script no arquivo de script de aplicação será corrido em vez de um no arquivo de script de falta se eles forem ambos salte à mesma batida de tecla, e uma função no arquivo de script de aplicação será chamada em preferência a um no arquivo de script de falta se eles ambos têm o mesmo nome. Por exemplo, isso significa se você tem um script no arquivo de script de aplicação nomeado a CTRL+G, e você também tem um script no arquivo de script de falta nomeado a CTRL+G, será executado só o um na aplicação quando você apertar CTRL+G. faz nem mesmo assunto se os dois scripts tiverem nomes diferentes. É a batida de tecla ligando que determina qual script correrá. Se você tenta nomear um script a uma batida de tecla que já está em uso pelo arquivo de falta enquanto usando as JAWS Gerente de script (Veja Capítulo 2.2 e 4.), você será dado uma mensagem de advertência, e você terá a oportunidade para continuar com a tarefa ou mudar isto a outro chave. Este é lhe impedir de incapacitar um script acidentalmente no arquivo de falta sem o perceber está fazendo assim. Há um pouco de considerações importantes ao decidir nos nomes e tarefas de batida de tecla para seus scripts. Se, por um lado, o usuário dá o feito sob encomenda script um nome diferente do um no arquivo de script de falta, então o usuário também pode nomear o script no arquivo de script da aplicação para a mesma batida de tecla é nomeado para no arquivo de falta sem conseqüências adversas. Por outro lado, se o usuário dá para o script de aplicação o mesmo nome no que tem o arquivo de falta, é nem mesmo necessário nomear uma batida de tecla àquele script de aplicação. Em qualquer embale, JAWS executarão o presente de versão na aplicação arquivo de script e ignorará o um presente no arquivo de falta. Isto é porque olhares de JAWS em ambos o keymap de falta arquivam, DEFAULT.JKM, e o keymap de aplicação arquive, APPLICATION.JKM, descobrir se um script com um nome particular é nomeado a uma chave quando aquela chave é apertada. JAWS sempre executarão um script na aplicação arquivo de script em preferência para um no arquivo de script de falta, até mesmo se a tarefa fundamental é feita no arquivo de keymap de falta. Em outro palavra, se ambos os arquivos de script tenha um script com o mesmo nome e a tarefa fundamental é feita no arquivo de script de falta, JAWS ainda saberão que é suposto que executa o um na aplicação arquivo de script. Funções, desde que eles não são ligados a batidas de tecla, tem que usar um mecanismo diferente. Se o script é uma função e, assim, não é ligado a uma batida de tecla, então uma função, com um nome particular no arquivo de script de aplicação será corrido em vez de tal uma função no arquivo de script de falta que tem o mesmo nome. Assim no caso de funções, é o nome que decide o resultado, não a batida de tecla. Nota que há um caso especial que acontece quando você tiver um script no arquivo de script de falta e um no arquivo de script de aplicação que ambos têm o mesmo nome e não são ligados que a uma batida de tecla. Neste caso, usos de JAWS o nome de script para determinar que é ativo, e o script no arquivo de script de aplicação levará precedência em cima do um com o mesmo nome no arquivo de script de falta. Neste caso especial, então, scripts não saltados a batidas de tecla determinam precedência da mesma forma que funções fazem. Assim, se um script é corrido, enquanto usando uma declaração de PerformScript, o script no arquivo de script de aplicação será utilizado em preferência para o um no arquivo de script de falta. Declarações de PerformScript são um modo alternativo de correr scripts, e eles serão discutidos depois neste manual. (Veja Capítulo 4.5.) Foi mencionado sobre isso, se houver um arquivo de script de aplicação disponível para uma aplicação particular, será carregado automaticamente quando aquela aplicação está carregado. JAWS sabem fazer isto porque a parte principal do nome de arquivo de script está igual ao nome da aplicação. Começando com versão 3.3 de JAWS para Windows, uma capacidade adicional foi somada que permite um usuário para carregar um arquivo de script do dele ou a escolha dela a qualquer hora. Este arquivo de script pode ter qualquer nome, e aquele nome não tem que se assemelhar ao nome da aplicação atual. Se tal um arquivo de script estiver carregado, substituirá o arquivo de script de aplicação regular dentro a pilha se tal um arquivo está presente. Este arquivo de script especial vai, em troca, seja substituído automaticamente qualquer hora o usuário troca a uma aplicação nova que carrega seu próprio arquivo de script. Esta capacidade nova permite um usuário para carregar um arquivo de script que é o alfaiate feito contender com situações incomuns em uma aplicação onde as exigências é muito diferente do resto da aplicação. O arquivo de script especial poderia ser carregado manualmente com uma batida de tecla ou automaticamente quando certas janelas ou artigos se aparecem na tela. A função carregava arquivos de script especiais é chamado SwitchToScriptFile. Pode ser chamado manualmente ou automaticamente através de técnicas que será descrito no resto deste manual. Finalmente, é importante entender que scripts apresentam no arquivo de script de falta está disponível de qualquer aplicação para sendo corrido, a menos que, como discutido acima, o script de falta é superceded por um script no arquivo de script de aplicação. Assim se você tiver um script que você deseja usar de mais de uma aplicação, você pode deseje colocar isto no arquivo de script de falta em lugar de em um arquivo de script de aplicação particular. 2.2 o que é o Gerente de script? JAWS lhe proporcionam todas as ferramentas que você precisa modificar e criar scripts. Estas ferramentas estão presentes em um programa chamado o Gerente de script. O Gerente de script é um cheio-caracterizou, programa de editor de texto. Além das características habituais contidas em a maioria os editores de texto, embutiu capacidades para lhe ajudar a criar scripts, funções de suplemento em seus scripts, informação de referência de exibição sobre estas funções e scripts que já foram escritos, confira para erros que violam as regras de script escrever correto, e economiza e compila seu arquivo de script. Além disso, há três chaves quentes que lhe permitem olhar pelos scripts dentro seu arquivo de script mais eficazmente. A chave de função, F2, pode ser usada para saltar adiante de script a script, enquanto SHIFT+F2 pode ser usado para saltar para trás de script para script. A combinação fundamental quente CTRL+L pode ser usado para expor um diálogo que lista todos os scripts no arquivo atual em ordem alfabética em uma janela separada. Isto faz isto mais fácil de achar um script particular dentro de um arquivo grande se você souber seu nome mas não se lembra onde no arquivo reside. Nós dissemos no último parágrafo que o Gerente de script poderia ser usado economizar e compilar seus arquivos de script. O que queremos dizer nós pela palavra "Compile?" Quando você escreve scripts para JAWS no Gerente de script, você lhes escreve em texto claro. Porém, JAWS não os podem usar nesta forma desde que não pode entender texto claro. Quando você economize seu arquivo de script no Gerente de script, executa um passo adicional que outros editores de texto e processadores de textos não fazem automaticamente. Cria um adicional arquivo que foi convertido de texto em um formato binário que JAWS podem entender e podem usar. O arquivo de texto original é economizado com um JSS (Fonte de script de JAWS) arquive extensão, e os compilaram ou versão binária é economizada com um JSB (script de JAWS Binário) extensão de arquivo. Isto é por que sempre é importante criar e economizar seu script arquiva usando o Gerente de script. Se você edita e economiza seus arquivos usando algum outro editor de texto como Notepad, eles não serão compilados quando você economizar eles, e JAWS serão totalmente desavisadas das mudanças que você fez. Há três modos para começar o Gerente de script. Estes são (1) de uma aplicação apertando INSERT+0, (2) INSERT+F2 urgente para invocar o Gerente de JAWS de Corrida Dialogue, seguiu pela carta S e o ENTRE em chave, ou (3) escolhendo o Gerente de script do cardápio de Utilidades de JAWS. Quando você começa o Gerente de script de dentro uma aplicação com ou método 1 ou 2, abre o arquivo de script automaticamente para aquela aplicação. Se nenhum arquivo existir, o Gerente de script cria um. Quando você começa o Gerente de script do cardápio de Utilidades, não abre nenhum arquivo. O gerente de script será discutido em muito mais detalhe tabixo no capítulo intitulou "O Gerente de script." 2.3 anatomia de um script Scripts e funções podem ser divididas em três seções principais. Os primeiros começos de linha no script ou função e é do formato de um do seguinte duas linhas: script ScriptName () Função FunctionName () Se o script é ligado a uma batida de tecla, sua primeira linha se parecerá a primeira linha acima. Se é uma função e, assim, não é ligado a uma batida de tecla, olhará como a segunda linha. Às vezes há uma palavra adicional antes da palavra Função, mas isso será coberto depois. (Veja Capítulo 7.5.3.) Em qualquer embale, o segunda palavra na linha será o script ou nome de função. Isto pode ser qualquer coisa que você quer, mas é muito útil para fazer o nome descritivo disso que o script ou função faz. Se você usar várias palavras acumuladas junto, capitaliza a primeira carta de cada palavra assim JAWS podem pronunciar isto corretamente. Não são permitidos espaços em um nome de script. Alguns exemplos típicos de nomes de script são SayNextLine, SayPriorCharacter, SayWindowTitle, e NextDocumentWindow. Nota que é muito fácil para conte destes títulos o que é pretendido que os scripts fazem. Finalmente, haverá uma esquerda e parêntese de direito ao término da linha. Às vezes estes parênteses conterá um pouco de informação, mas isso será discutido depois. (Veja Capítulo 7.5.2.) Logo vem o corpo do script. Isto consiste em todas as instruções que você soma durante o script escrever, como declarações variáveis, comentários, controle de fluxo, declarações, chamadas de função, declarações de PerformScript, e operações de aritmética. Você aprenderá o que todos estes tipos de instruções são como nós procedemos por o manual. Para informação imediata sobre o mais importante destes, Veja Capítulo 7.3. Finalmente, a última linha do script se parecerá um das próximas duas linhas: EndScript EndFunction Obviamente, a primeira linha é usada para terminar um script, e o segundo é usado para terminar uma função. Quando você usa o diálogo de criação de script do Gerente de script, como discutido debaixo de, um script em branco já será criado com as primeiro e últimas linhas apresente na tela com várias linhas em branco entre. Tudo você tem que fazer é tabstecimento no corpo do script entre estas primeiro e últimas linhas. 3 nossos Primeiros Scripts Agora escrevamos um par de scripts pequenos. O primeiro terá JAWS falar nosso nome em demanda. Nós colocaremos isto no Notepad script arquivo de forma que nós pode aprender um pequeno sobre script que escreve sem desarrumar ao redor no arquivo de script de falta muito importante. Siga estes passos exatamente e você verá aquela escritura scripts simples não é tudo aquilo duro. 1. Se você já não tiver JAWS por Windows correr, comece. 2. Notepad aberto desde o começo grupo de Menu/Programs/Accessories. 3. Escolha o Gerente de script apertando INSERT+0 ou apertando INSERT+F2 seguiu por S e ENTRA. JAWS lhe falarão que você está em NOTEPAD.JSS, a fonte de script, arquivo para Notepad. 4. Você notará que não há nenhum script neste arquivo. Notepad precisa de nenhum script, enquanto abrindo de dentro assim o Gerente de script Notepad começaram uma marca fonte nova arquivo. 5. Escolha script Novo do cardápio de script ou use o acelerador combinação fundamental, CTRL+E. 6. O diálogo de script Novo se aparece assim nós podemos nomear nosso script e podemos escrever sua documentação. Para agora, há pouco siga os passos. Nós cobriremos scripts nomeando e documentam em mais detalhe depois. (Veja Capítulos 4.4 e 5.1.) 7. Quando o diálogo de script Novo se aparecer, o cursor está no campo de Nome de script. Digite SayName. Capitalize o S e N, e não ponha em um espaço. 8. Aperte TAB para se mudar para a Lata seja prendido para teclar checkbox, e imprensa SPACEBAR para conferir isto. Este é o passo que fala para o Gerente de script que este é um script e não uma função. Conferindo esta caixa, nós tornamos isto possível prender o script a uma chave. 9. Aperte TAB para mover ao campo de Sinopse, e digite as palavras, "Say nosso Nome." 10. Aperte TAB para mover ao campo de Descrição, e digite as palavras, "O nome da pessoa que escreveu este script". 11. Aperte TAB para mover ao campo de Categoria, e digite o palavra "Teste." O campo de Categoria é um edita combo, assim você pode escolher uma categoria digitando a pessoa ou por arrowing tabixo pela lista achar um que é apropriado. 12. Aperte TAB para mover o Nomeie A campo, e imprensa CTRL+SHIFT+N para nomear esta batida de tecla a nosso script. 13. Nós não precisaremos de qualquer outro campo preenchido para nosso script, assim imprensa ENTRA em fechar o diálogo de script Novo e inserir nosso script em branco na área editando. 14. Nós estamos agora atrás na área de texto principal do Gerente de script, e nós temos um script em branco onde a primeira linha diz SayName para "script () " e a última linha diz "EndScript." Nós fomos colocados entre estas duas linhas. Seta até a primeira linha em branco depois da primeira linha, e você está pronto para começar escritura o corpo de o script. 15. Nós queremos JAWS para falar um fio de caráter, quer dizer, nosso nome. Nós podemos fazer isto usando um de JAWS funções embutidas chamado SayString. Se lembre que JAWS funções embutidas são funções que são duro-codificadas em JAWS para fazer trtablhos particulares e não podem ser modificadas pelo usuário. Estes são os blocos de edifício básicos nós use para criar scripts. Este aqui é projetado para falar mensagens durante execução de script. Note que há nenhum espacial no nome de função. Funções de computador são freqüentemente nomeado reunindo um par de palavras isso descreva a função. O que nós precisamos fazer então é contar para o SayString funcione o que nós queremos isto para falar. Em outro palavra, a função de SayString conta JAWS nós queremos isto para dizer algo, e então nós temos que contar a função que palavras queremos nós isto dizer. Nós temos que passar um pouco de informação para a função para isto para fazer seu trtablho. É chamada esta informação que nós estamos passando à função um parâmetro, e isso é um mais pedaço de jargão para você se lembrar. Neste caso, o parâmetro que nós queremos passar é o fio de cartas que incluem nosso nome. Digite sua linha de código exatamente como se aparece em a próxima linha a não ser que você deveria substituir seu próprio nome para as cartas XXX: SayString ("Meu nome é XXX") 17. Você deveria ter agora exatamente o seguinte três linhas em sua página como eles se aparecem tabixo. Se lembre aquele fim não é nenhum bem bastante como computadores espere que nós sejamos preciso e perfeito. Também, alguns linhas em branco extras não são importantes. JAWS ignoram linhas em branco em scripts. script SayName () SayString ("Meu nome é XXX") EndScript 18. Agora nós precisamos economizar e compilar o Notepad script arquivo. Aperte CTRL+S e você deveria ouvir, "Compile Complete." Se não, volte e repasse os passos e prova novamente. 19. Feche o Gerente de script. Isto deveria o colocar atrás em Notepad. Teste seu trtablho apertando CTRL+SHIFT+N. Como sobre isso! Seu primeiro script. Troque a outra aplicação e tente a mesma combinação de chave quente. Note que este tempo não trtablha o script. Isto é porque nós colocamos o script no Notepad arquivo de script, e aquele arquivo era descarregado quando nós deixamos Notepad. Se nós tivéssemos colocado o script no arquivo de falta, teria trtablhado em qualquer aplicação a menos que isso o arquivo de script de aplicação também teve um script nomeado à mesma chave quente. Troquemos atrás a Notepad e prova qualquer outra coisa. Aperte o INSERT+1 combinação fundamental (usando o 1 na fila de número, não o teclado complementar), e JAWS dirão "teclado ajude em." Este é o modo de ajuda você pode usar para explorar o teclado sem ativar quaisquer das chaves de fato. (Você pode deixar o modo de ajuda de teclado apertando INSERT+1 uma segunda vez.) Agora aperte sua chave quente novamente. Emocione! Este tempo que a chave quente não diz para seu nome diz o que a chave quente faz. Aperte a combinação fundamental quente duas vezes muito depressa, e você ouvirá falar informação mais detalhada até mesmo do que a chave quente faz. Estes pedaços de informação são a sinopse e campos de descrição você preencheu enquanto criando o script. Agora você pode ver por que é importante para preencher estes campos corretamente. Para nosso próximo script, façamos algo um pequeno mais prático. Abra a aplicação de WordPad desde o começo grupo de Menu/Programs/Accessories. Agora derrube tabixo o arquive cardápio apertando ALT+F. Imprensa o TABIXE SETA sete vezes, e você pousará em uma linha que fala o nome do último arquivo você aberta em WordPad. (Se você tem nunca aberto qualquer arquivo em WordPad, faz tão agora assim você terá esta linha em seu cardápio de arquivo.) Não vá é agradável se nós pudéssemos ler esta linha e poderíamos saber isso que o mais mais arquivo recentemente aberto estava sem usar tudo dessas batidas de tecla? Escrevamos um script para fazer há pouco isso. Como antes de, siga os passos como descrito tabixo. 1. Abra o Gerente de script apertando INSERT+0, ou INSERT+F2 seguiu por S e ENTRA. 2. Como antes de, você deveria ser colocado em um arquivo de script em branco nomeado WORDPAD.JSS. Comece um script novo selecionando script Novo do cardápio de script ou apertando o Acelerador de CTRL+E combinação fundamental. 3. Você será colocado no campo de Nome de script. Digite LastOpenedFile sem qualquer espaço e capitalizou como mostrado. 4. TAB para a Lata seja Prendida para Teclar confira caixa e confira. 5. TAB para o campo de Sinopse e digita "Diz arquivo por último aberto." (Não inclua os aspa, eles só são usados aqui lhe mostrar o que digitar. Este comentário aplica a todos os aspa lhe contava o que digitar.) 6. TAB para o campo de Descrição e digita "Diz o nome do último arquivo aberto em WordPad." 7. TAB para a Categoria edita combo e seta tabixo até que você alcança o Say categoria. 8. Aba em cima de para o Nomeie a campo Fundamental Quente e imprensa CTRL+SHIFT+L fazer este sua chave quente. 9. TAB em cima de para OK, e imprensa ENTRA. 10. Nós estamos agora atrás na área de texto principal do Gerente de script, e nós temos um script em branco onde a primeira linha diz LastOpenedFile para "script () " e a última linha diz "EndScript." Nós fomos colocados entre estas duas linhas. Seta até a primeira linha em branco depois da primeira linha, e você está pronto para começar escritura o corpo do script. 11. Este script é bastante mais complicado que o último. Mostrado tabixo é o script completado, inclusive as primeiro e últimas linhas nas que foram colocadas o arquivo de fonte em branco pelo Gerente de script. Digite o segundo pelo próximo a últimas linhas em seu script em branco, e você deveria terminar com algo que olhares há pouco igual o debaixo do qual é mostrado script LastFile () SpeechOff () {Alt+F} Pausa () NextLine () NextLine () NextLine () NextLine () NextLine () NextLine () NextLine () SpeechOn () SayLine () SpeechOff () {escape} {escape} Pausa () SpeechOn () EndScript Assim, isso que no mundo estão tudo deste declarações fazer? Bem, você pode ter notado que quando você apertou ALT+F em WordPad abrir o cardápio de arquivo, JAWS disseram "cardápio ativo, arquive, novo, CTRL+N". Nós não queremos ouvir tudo aquilo materiais durante nossa execução de script, assim a segunda linha no script, SpeechOff () voltas fora fala até nós estamos prontos para isto. Então a declaração {ALT+F} envia o ALT+F comandam a WordPad, da mesma maneira que se nós tivéssemos digitado isto do teclado. Como você aprenderá depois (Veja Capítulo 8.8.), nós sempre colocamos batidas de tecla que nós queremos enviar à aplicação entre esquerda e direito parênteses ondulados ou suspensórios. Então nós temos uma declaração de pausa que dá a aplicação que uma chance para derrubar tabixo o cardápio antes do script procede. Isto é muito terminado ao pedir para aplicações executar atividades. Sem isto, nosso script poderia adquirir à frente da aplicação e poderia fazer coisas antes da aplicação está pronto. Então nós seta tabixo sete vezes com as sete declarações de NextLine. Isto nos traz à linha onde o último arquivo aberto é listado. Antes de nós podermos falar esta linha, nós temos que retroceder o sintetizador em com a declaração de SpeechOn. Logo nós temos uma declaração de SayLine que fala os conteúdos da linha atual. Isso é a função atual que nos dá os dados que nós queremos. Agora nós temos que virar o fala atrás fora com a função de SpeechOff assim nós não ouvimos todas as JAWS de material normalmente que fala ao encerrar um cardápio. Agora duas declarações de Fuga nos adquirirão fora de o cardápio. Note que aqui, novamente, estes devem estar entre parênteses ondulados. Então nós temos outra declaração de Pausa para permitir o tempo de cardápio para desaparecer, e finalmente nós termine retrocedendo a fala em com uma declaração de SpeechOn final. 12. Agora você deveria economizar e deveria compilar seu script apertando CTRL+S. 13. Volte a WordPad, e aperte sua chave quente nova, CTRL+SHIFT+L. Você deveria ser recompensado ouvindo JAWS falarem o nome do último arquivo que você abriu. Se você pensa que isto é grande, só espera. Você há pouco está começando a experimentar os tipos de coisas você pode fazer com este idioma de scripting fabuloso. Já testamento você está à mercê de algum programador bobo que não seguiu regras normais e escreveu a aplicação assim pudesse ser acessado facilmente com fala. Já testamento você seja forçado a executar uma dúzia de tecla para adquirir um pedaço de informação fora a tela que seus amigos perspicazes só podem acessar olhando à tela. Não mais muito tempo vá você tem que esperar por outra pessoa configurar uma aplicação nova para você. Pode levar algum trtablho para aprender este idioma, mas você será recompensado com a capacidade de fazer suas aplicações fala e se comporta muito mais igual você deseja. Aprenda bem esta matéria-prima, e você poderá acessar muito suas aplicações melhor e mais eficazmente que você alguma vez teria imaginado poderia ser possível. Uma mais palavra de encorajamento é necessária antes de adquirir ao real nitty arenoso do idioma de scripting. Às vezes está amedrontando para ver um script completado como o um sobre isso trtablha há pouco o modo que deve. O escritor de script novo olha para tal um script e diz "Como no mundo figuraram eles fora qual declarações usar e a ordem correta para os pôr dentro? " Deve ser entendido que scripts não estouram fora de ar magro como um corretamente e completamente-terminou produto. O autor tentou muitas configurações diferentes do anterior script antes de vir ao que trtablhou melhor, o um mostrado acima. A primeira versão não conteve qualquer SpeechOff ou declarações de SpeechOn, e o script resultante falou muito muita informação. Assim estas declarações foram somadas. Mas várias tentativas eram necessárias antes de a melhor colocação fosse achada. Então o script ainda não trtablhou corretamente até que foram postas declarações de Pausa nos lugares certos, um processo que requereu mais, tentativa e erro. O ponto é que você terá que fazer sua melhor suposição e tentar algo. Se isso não trtablhar, tente qualquer outra coisa. Como você ganhe mais experiência, você adquirirá isto corrija mais depressa. Mas o único modo para aprender este idioma novo está pelo processo de tentativa e erro que acontece como você faça suas tentativas de scripting. Não tenha nenhum medo de tentar coisas. O pior que acontecerá é que o script não fará o para o qual você quer isto, e você terá que tentar qualquer outra coisa. Você cometerá erros, mas isso faz parte do processo. O mais experimentam você ganha, o mais rápido e mais fácil se tornará. Mas se você não tentar escrever alguns scripts, você nunca aprenderá como fazer isto. Até agora você deveria estar adquirindo um quadro mental de por que nós precisamos de scripts, como JAWS os usam melhorar sua eficiência, e como a falta e script de aplicação arquivos trtablham junto. Os próximos dois capítulos de Parte 1 são titulados "O Gerente de script" e Scripts Simples Criando." Estes são seguidos através de Parte II, enquanto "Criando Avançado "Arquivos de script. Qualquer um que não está completamente familiarizado com o Gerente de script e todas as ferramentas que contém por criar e documentar scripts deveriam ler o capítulo que descreve o Gerente de script. Então, se você quer aprender criar scripts para ler informação textual da tela e executar outras funções simples, continue com os Scripts Simples Criando" capítulo. Esses que querem aprender criar scripts avançados que envolvem procedimento com janelas estruturam, enquanto usando programação constrói e manipulando colocações de JAWS e que já entendem como escrever scripts simples deveria saltar este capítulo e continua com Parte II, enquanto "Criando Avançado "Arquivos de script. Lição de casa #1 Aqui são sua primeira lição de casa e uma chance adquirir um pequeno mais experiência em escritura de script. Você provavelmente notou durante a escritura do último script que o cardápio de arquivo em WordPad não mostra há pouco o último arquivo que você abriu, mostra os últimos quatro arquivos abertos. Modifique o script precedendo de forma que isto lê tudo quatro destes arquivos, não só o primeiro. Uma solução para o problema é mostrada em Apêndice UM (Veja Capítulo 0.), mas não olha para isto até que você teve uma prova boa a fazer isto trtablha você. 4 o Gerente de script O uso do Gerente de script, o diálogo de criação de script, e as várias outras ferramentas por criar scripts e arquivos de script será discutido nesta seção. Como brevemente descreveu mais cedo (Veja Capítulo 2.2.), o Gerente de script é mais que há pouco um editor de texto. Proporciona para o usuário um apartamento de ferramentas que fazem script e criação de arquivo de script muito mais fácil. Nós dividiremos a descrição do Gerente de script em cinco partes. Estes são (1) os cardápios, (2) o vário Gerente de script tipos de arquivo, (3) inclua declarações, (4) o script Novo e Informação de script dialoga, e (5) a Função de Suplemento e Insere diálogos de PerformScript. 4.1 os Cardápios Uma descrição detalhada dos script Gerente cardápio artigos pode ser achada em Apêndice o B. 4.2 script Gerente Arquivo Tipos Nós já mencionamos que há mais de um tipo de arquivo que o Gerente de script pode gerar. Listado tabixo é os cinco tipos de arquivos associados com o Gerente de script e o para o qual cada um é. * JSS - Como discutido acima, este é o JAWS script Fonte arquivo que o usuário cria para fazer arquivos de script aplicação-específicos. * JSB - Este é o script de JAWS arquivo Binário que é criado pelo Gerente de script quando você economizar e compila um arquivo de JSS. Este arquivo nem é criado diretamente nem editado pelo usuário. * JSM - Este é o JAWS script Mensagem arquivo e contém tudo das mensagens faladas usadas por script Say e funções de SayMessage. Quando a pessoa cria script avançado arquivos que serão distribuídos internacionalmente, é preferível para usar números de mensagem dentro o Say e SayMessage funciona em lugar de lugar o texto atual lá. Isto faz isto mais fácil de traduzir as mensagens em outros idiomas. O arquivo de JSM contém as declarações que contam para o arquivo de script o que falar para uma determinada mensagem número. Estes números de mensagem são realmente só constantes que estão definido como sendo igual à mensagem você querem falado. Se você olha para a estrutura do DEFAULT.JSM arquive, você verá que os números de mensagem estão definidos de exatamente o mesmo modo como todas as outras constantes. Por exemplo, a falta que JSM arquivam, DEFAULT.JSM, contém declarações como MSG1_L = "Fim" e MSG2_L = "casa." Você notará que as declarações são colocadas a pessoa a uma linha e uma vírgula está ao término de toda declaração exclua o último no arquivo. Se um script em DEFAULT.JSS encontra a linha Say (MSG1_L, OT_JAWS_MESSAGE), dirá "fim", e se encontra a linha Say (MSG2-L, OT_JAWS_MESSAGE), dirá "Casa." Se você está criando que script pequeno arquiva para uso pessoal, você pode não desejar aborrecer com JSM arquiva, mas se você encontra mensagem números em scripts escritos por outros, você saberá olhar no arquivo de JSM associado para descobrir para o que o número de mensagem se refere. Uma discussão de longo (- L) e curto (- S) são apresentadas mensagens e a utilização deles/delas para colocações de verbosidade feito sob encomenda depois. (Veja Capítulo 8.9.) * JSH - Este é o JAWS script Cabeçalho arquivo, e contém outra informação pertinente para o arquivo de JSS associado como definições de constantes e variáveis globais. Nós já discutimos brevemente constantes e variáveis e estaremos falando mais extensivamente sobre eles tabixo. Variáveis globais simplesmente são variáveis que podem seja usado por mais de um script. É necessário contar para JAWS o que o valor de uma constante é, ou não saberá aquela informação. Semelhantemente, é necessário contar JAWS que você estará usando uma certa variável com um certo nome, ou JAWS terão nenhuma idéia que este fio particular de cartas será considerado uma variável. Este processo de JAWS reveladoras sobre as constantes e variáveis nós estaremos usando é chamado declaração. Se você há pouco tem alguns constantes e global variáveis, você pode os colocar diretamente no topo do arquivo de JSS que você está criando. Este procedimento será discutido mais completamente tabixo. Variáveis regulares ou locais sempre é declarado dentro do próprio script. Porém, se você tiver números grandes de constantes e variáveis globais, é melhor para os colocar em um arquivo de JSH. Examine os arquivos HJGLOBAL.JSH e HJCONST.JSH para exemplos de arquivos que contêm variáveis globais e constantes. * JSD - Este é o JAWS script Documentação arquivo e contém tudo da informação descritiva sobre cada script no que você entra quando você criar um script novo usando o Diálogo de script Novo. Nesta informação é entrada automaticamente no arquivo de JSD quando você criar um script nesta moda. Este arquivo pode ser editado manualmente se desejou. 4.3 incluem Declarações Saymos que você decide usar um and/or de JSM que JSH arquivam como partes de um jogo de arquivos de script que você está escrevendo para uma aplicação nova. Assim você prossegue e cria estes arquivos, entretanto o que? Como o script principal arquiva, o JSS arquivam, sabe que estes outros arquivos existem e parte do jogo de script é? Dê uma olhada perto do topo de DEFAULT.JSS, e você verá declarações como o seguinte: Inclua "hjglobal.jsh"; falta HJ variáveis globais Inclua "HJCONST.JSH"; falta constantes de HJ Inclua "default.jsm"; arquivo de mensagem Estes são chamados inclua declarações, e o propósito deles/delas é contar o arquivo de JSS que toda a informação nos arquivos incluídos são parte do jogo. Quando você economiza o JSS arquivam e criam o JSB arquivam, toda a informação nos arquivos incluídos também serão compilados no arquivo de JSB resultante. Assim, os scripts no JSS arquivo saberá sobre as definições contidas nos arquivos incluídos. A sintaxe para estes inclui deveriam ser seguidas declarações exatamente como mostrado. Nota que o nome de arquivo inclui a extensão e é incluso em aspa. Tudo depois que o ponto-e-vírgula seja um comentário e simplesmente é lá prover o leitor com informação. Tudo seguindo um ponto-e-vírgula em uma determinada linha é ignorado pelo compilador. Estes comentários são opcionais. 4.4 o script Novo e Diálogos de Informação de script O diálogo de script Novo é achado debaixo do cardápio de script, e o diálogo de Informação de script é achado debaixo do cardápio de Visão como a opção de Documentação. Estes dois diálogos é o mesmo, a não ser que o diálogo de script Novo é exibido quando um cria um script primeiro, e o diálogo de Informação de script é exibido quando a pessoa desejar revisar documentação para um script que já existe. O acelerador tecla para estes dois diálogos é CTRL+E E CTRL+D, respectivamente. A maioria das opções de cardápio no Gerente de script tem acelerador tecla, e o usuário pode ficar familiar facilmente com o ones freqüentemente usado examinando os cardápios. Há duas tabs nestes diálogos de multi-página, a tab Geral e a tab de Parâmetros. Cada um destes é descrito tabixo. 4.4.1 Aba geral As entradas na tab Geral são como segue: * Nome de script - Isto é onde você entra no nome de seu script ou função. É útil para usar um nome descritivo do que o script faz. Você pode usar vários palavras concatenaram junto. Comece cada palavra com uma letra maiúscula assim JAWS pronunciarão o nome como palavras separadas. Nenhum espaço é permitido no nome. * Pode Ser prendido para Teclar - Este é um checkbox. Se você confere isto que você criará um script. Se não, você criará uma função. Se lembre que scripts são fixos para chaves e funções não é. * Sinopse - Este campo deveria conter uma declaração breve do que o script faz. Isto é usado se você entrar no modo de ajuda de Teclado (INSERT+1) ou ajuda de Palavra chave (SHIFT+F1) no Gerente de script. A sinopse é acessada apertando a combinação fundamental você busca interessado dentro virando em Ajuda de Teclado. * Descrição - Este campo deveria conter uma explicação mais detalhada do que o script faz. Esta descrição é usada se você entrar no modo de ajuda de Teclado (INSERT+1) ou ajuda de Palavra chave (SHIFT+F1) no Gerente de script. A descrição é acessada apertando a combinação fundamental depressa você busca duas vezes interessado dentro virando em Ajuda de Teclado. * Categoria - Você pode digitar um nome de categoria ou pode escolher a pessoa da caixa de combo. Este campo de Categoria não é usado atualmente por qualquer JAWS caracterize, mas pode ser implementado no futuro permitir escolha de seus scripts através de categoria. * Nomeie a Chave Quente - Este campo só está disponível se você conferisse a "Lata seja Prendido para Teclar" checkbox. Deprima a combinação fundamental que você deseja usar para uma chave quente entrar em sua escolha. Se a escolha que você faz já é nomeada a outro script, você ouvirá uma mensagem de advertência e dará a oportunidade para continuar com a tarefa ou escolhe um diferente. * Lucros de função - Esta escolha só está disponível se você não conferisse a "Lata seja Prendido para Teclar" checkbox. As cinco escolhas são Manivela, Int, Objeto, Fio, e Nulo. Selecione um do primeiro quatro se sua função é projetada para devolver um destes tipos de dados ao script de chamada. Selecione Nulo se você não precisar use qualquer valor devolvido pela função. Seja qual for que você escolhe se aparecerá na primeira linha do script antes da palavra Função. Uma discussão mais detalhada de lucros será dado depois. (Veja Capítulo 7.5.3.) * Descrição de retorno - Esta escolha só está disponível se você não conferisse a "Lata seja Prendido para Teclar" checkbox. Este campo deveria conter uma descrição breve de o que informação está sendo devolvida pela função e como a informação é significada ser usada. 4.4.2 Aba de parâmetros Esta tab contém informação sobre parâmetros usados pela função, se qualquer. Um parâmetro é dados que a função precisa ter para fazer seu trtablho. Como com variáveis, os dados podem estar na forma de uma inteireza, fio, manivela, ou objeto. Esta tab nunca é usada se você estiver criando um script em lugar de uma função. Isto também não é usado se a função precisar de nenhum parâmetro. Entradas para esta tab são como segue: * Parâmetros existentes - Este listbox já mostrarão parâmetros existentes, se qualquer. Também mostrará parâmetros como você os some. Você enlata seta para cima e para baixo para selecione um parâmetro para apagamento subseqüente. * Parâmetro novo - Se você desejar somar um parâmetro, digite seu nome neste campo. * Através de Referência - para entender este artigo, tem que entender você que são usados parâmetros para transferir dados do script de chamada para a função. Normalmente, estes dados transferência é uma uma rua de modo. Esta situação de falta é conhecida como passando o parâmetro "por valor." Assim, quando você chama a função do script, a corrente, valor do parâmetro como existe no script será copiado e será enviado à função. Durante a execução da função, é possível para o valor de o parâmetro para mudar. Considerando que a troca de informação de parâmetro normalmente é uma uma rua de modo que quando o dados é passado por valor, o script não estará atento que o valor do parâmetro mudou. Quando a função é terminada e lucros controlam ao script, o script continuará em com seu valor original pelo parâmetro. Conferindo o Através de checkbox de Referência a uma rua de modo mudará em uma dois rua de modo. Se este checkbox foi conferido, mudanças no valor do parâmetro isso acontece durante a execução da função será conhecido pelo script de chamada. Isto torna isto possível mudar o valor de um parâmetro dentro de uma função e então tenha o uso de script que mudou valor. Isto é porque passando por referência passa o endereço de memória dos dados em lugar de o valor para a função. Se o mudanças de função o valor a este endereço, o script de chamada ou funciona que usa os dados ao mesmo endereço usará o valor mudado. * Descrição - Este campo deveria conter uma descrição muito breve do para o qual o parâmetro é. * Tipos disponíveis - Você deveria escolher qualquer Manivela, Int, Objeto, ou Fio deste listbox, enquanto dependendo em qual tipo de informação para o que este parâmetro é significado passagem. Como será discutido depois, manivela recorre a uma manivela de janela. (Veja Capítulo 6.) * Some - Este botão estará disponível se você preencheu os campos precedendo. Use o SPACEBAR ou ENTRE em chave para acrescentar seu parâmetro novo aos Parâmetros Existentes listbox. * Remova - Este botão estará disponível se você realçou uma entrada no listbox de Parâmetros Existente. Escolhendo este botão com o SPACEBAR ou ENTRA em chave apagará o parâmetro realçado da lista. 4.5 a Função de Suplemento e Suplemento Diálogos de PerformScript Debaixo do cardápio de script, há duas seleções, Chamada de Função de Suplemento e Insere PerformScript. Estes são usados inserir funções e chamar outros scripts de dentro de um script. O uso destas duas ferramentas é descrito tabixo. * Insira Função Chame - Isto expõe o diálogo de Função de Suplemento que é uma lista de mais de duzentas funções que você pode usar em sua construção de script. Você ouvirá o título "Inserir Funcione 1. " A termo Função 1 meios que você está ao primeiro nível deste diálogo. O primeiro campo neste diálogo é um edite caixa. A próxima tab é uma lista alfabética de todas as funções disponíveis. Se você acontecer para saber o nome de sua função, você pode começar datilografia isto dentro o edite caixa, e o destaque na lista alfabética moverá automaticamente à função cujo começos de nome com as mesmas cartas você há pouco digitou. Você também notará que uma descrição da função realçada é lida a você cada tempo você imprensa outra batida de tecla. Assim que você digitasse bastante cartas para ouvir o nome da função está procurando você, só imprensa ENTRA para selecionar aquela função. Se você não se lembrar do nome exato da função, há pouco digite em bastante do nomeie para o adquirir parte da lista à direita, então TAB em cima de para a lista, e seta para cima e para baixo até que você acha a função que você quer. Você também pode digitar função nomes enquanto você está na lista, e o Gerente de script moverá à função com o nome correto. Você também ouvirá descrições de função como você seta para cima ou tabixo na lista. Quando você bateu o ENTRE em chave para selecionar uma função, um de duas coisas acontecerá. Se esta função não requerer nenhum parâmetro, você vai seja voltado ao Gerente de script principal que edita janela, e você verá que a função foi acrescentada a seu script. Porém, se a função requer um ou mais parâmetros, outro diálogo que contém um edite campo se aparecerá lhe pedindo que inserisse o parâmetro. Por exemplo, se você escolhe SpellString como uma função, você será colocado dentro um edite campo onde você pode inserir o texto ou mensagem você desejo soletrado. Este é o parâmetro requerido pela função de SpellString. Se o funcione você escolheu lhe exige que escolha outra função como o parâmetro, você pode bater a combinação fundamental ALT+I, e quais olhares um diálogo novo abrirá muito como o Diálogo de Função de Suplemento. Você ouvirá o título "Inserir Funcione 2." A única diferença é que as únicas funções que se aparecem nesta lista é o ones que o Gerente de script pensa são escolhas apropriadas para este parâmetro. Então, não todas as funções da lista principal se aparecerão neste substituto lista. Você ou tem que escolher uma função desta lista ou tem que digitar o nome de função diretamente no parâmetro edita campo quando se aparecer primeiro. Então bata Entre. Continue com este processo até tudo dos parâmetros exigidos foi entrado. Às vezes você terá que ir para um terço ou nível mais alto até mesmo, i.e., "Suplemento Funcione 3", "Insira Função 4", etc. batendo ALT+I novamente. (Este processo de usar funções como os parâmetros para outras funções que "aninha" é chamado, e isto será discutido mais completamente depois na seção intitulou "Usando Funções Aninhadas." Veja Capítulo 8.6.2.) O Gerente de script o devolverá então ao editar principal janela, e sua função com todos seus parâmetros estará presente no script. Enquanto você estiver no diálogo de Função de Suplemento, você também enlata TAB em cima de para a Descrição e Devolve campos para examinar informação sobre a descrição de função e informação de retorno, se qualquer, em mais detalhe. Também vale que nota que a lista de função neste diálogo contém ambas as funções codificadas duras construídas em JAWS e as funções pelas que estiveram definidas qualquer usuário no arquivo de script atual. Assim, se você definir uma função nova para o arquivo de script, você verá isto se aparecer na lista de função depois que você compilar. * Insira PerformScript - Quando você selecionar esta opção, você será colocado em uma caixa de lista que contém tudo dos scripts disponíveis você pode chamar do script presente você está escrevendo. Você enlata seta por esta lista ou datilografia de começo o nome do script saltar a isto. Apertando ENTRAM em aceso dos nomes, por exemplo, um script "SayMyName" chamado, causará a linha mostrada tabixo se aparecer em seu script. PerformScript SayMyName () Esta linha fará o script "SayMyName" ser executado, da mesma maneira que se você tivesse batido a batida de tecla você. Este é um modo para usar de novo scripts que você já escreveu sem reproduzir por toda parte novamente o código. 5 Scripts Simples criando Um exemplo de um script simples é a pessoa em qual você poderia desejar ler algum texto localizou em algum lugar na tela com uma única batida de tecla. Um modo para fazer isto vai seja selecionar um cursor, mova ao ponto específico na tela onde o texto é, e então leia o texto. Nesta seção, nós entraremos em cima de como criar scripts reunindo funções que fazem esses tipos de coisas. 5.1 Documentação de script Cada script associou documentação. Como discutido acima, você entra nesta documentação como você crie um script novo. Sempre são nomeados scripts simples a chaves e requer só cinco pedaços de documentação. O seguinte é uma descrição de cada campo que é requerido para um script simples. * Nome de script - Entre no nome para seu script. * Pode ser prendido para Teclar checkbox - Sempre confira esta caixa para scripts de chave-salto. * Sinopse - Proveja uma descrição breve do propósito de seu script. * Descrição - Proveja informação adicional sobre seu script. * Categoria - Escolha uma categoria para seu script. Você nomeia a categoria ou nomeia os digitando ou os escolhendo do edite lista de combo. Tente escolher significante de forma que você podem os listar depois por categoria lógica, no evento que esta capacidade é acrescentada ao Gerente de script. 5.2 Estrutura de script individual Se lembre que um arquivo de script é composto de um ou mais scripts. Como discutido acima, um script tem que ter os pedaços seguintes nesta ordem exata: 1. Primeiro é o script comece palavra chave. Este simplesmente é o palavra "script" seguido por um espaço. 2. No mesmo seguinte de linha o palavra "script" é o nome de script. Isto é normalmente várias palavras concatenadas isso junto descrevem a ação deste script, como, CloseDocumentWindow. Nota que cada uma das palavras concatenadas é capped inicial, assim JAWS podem ler o nome corretamente. () segue o nome para completar o script começa declaração. Em tudo isto são entrados automaticamente pelo Gerente de script quando você criar um script que usa o Diálogo de script Novo. (Se você achado que sua cópia de JAWS não está pronunciando palavras concatenadas corretamente assim, confira o Caso Misturado opção de Processo do Texto que Processa seção das Opções Fixas cardápio no Gerente de Configuração. Este checkbox deveriam ser conferidos.) 3. Logo vem o corpo do script. Isto consiste em todas as instruções que você soma durante o script escrever, como declarações variáveis, declarações de controle de fluxo, chamadas de função, declarações de PerformScript, operações de aritmética, e comentários. (Você aprenderá o que todos estes tipos de instruções são como nós procedemos por o manual.) Isto poderia ser tão simples quanto há pouco dizendo um fio como nós fizemos em "Nosso Primeiro script" ou muitas funções para executar uma operação complexa. 4. A palavra chave de fim de script, EndScript, sempre é a última linha de um script. Nisto é entrado automaticamente pelo Gerente de script quando você criar um script. 5.3 Funções de script usando Agora, revisemos algumas das funções geralmente usadas por se mudar a tela ao redor e ler texto. 5.3.1 Texto de leitura Debaixo de é algumas funções liam texto da tela. * SayCharacter () - Lê o caráter à posição do cursor ativo. * SayWord () - Lê a palavra à posição do cursor ativo. * SayLine () - Lê a linha ao cursor ativo. * SayToCursor - Lê desde o princípio da linha até o cursor ativo. * SayFromCursor - Lê do cursor ativo ao fim da linha. * SayColor - Diz a cor de fonte ao cursor ativo. * SayFont - Diz o estilo de fonte e tamanho de ponto ao cursor ativo. * SayTextBetween - Fala todo o texto entre dois coluna coordena na linha do cursor ativo. * SayWindow - Lê a janela localizada ao cursor ativo. * SayToBottom - Lê todo o texto da posição do cursor ativo para o fundo da janela. * SayString - Fala dados de fio, normalmente ou os conteúdos de uma variável de fio ou uma mensagem específica. Se texto atual for usado, deveria ser colocado dentro de aspa dentro dos parênteses que seguem o nome de função. Se uma variável ou constante é usada, nenhum aspa deveria estar presente. É recomendado agora que a função de SayString seja evitada a favor da função de SayMessage (veja tabixo). * Say - Esta função fala um fio de texto, muito como o SayString funcione, mas tem um segundo parâmetro chamado um modo de produção. Estes modos de produção permitem o mensagem ser falado com um jogo particular de características de fala. É possível usar modos de produção separados para falar linhas de título, controles de diálogo, artigos de cardápio, etc, com vozes diferentes ou a níveis de verbosidade diferentes. Usando o SayMessage funcione ao invés, é possível nomear mensagens curtas e longas para muitos tipos de produção para JAWS Ajudam e outra informação. * SayMessage - Esta função leva mensagens curtas e longas providas como parâmetros e fala a mensagem apropriada baseado no tipo de produção especificado, também proveu como um parâmetro. Esta função é semelhante Dizer, a não ser que é possível nomear mensagens curtas e longas a muitos tipos de produção para JAWS Ajude e outra informação. É recomendado agora que a função de SayMessage seja usada em preferência à função de SayString. * SayAll - Diz toda a informação legível do ponto do cursor ativo para o fundo da janela. Se o cursor de PC é ativo, rolos de papel de JAWS a tela por rebaixando o cursor de PC. Se o cursor de JAWS for ativo, o resto da janela é erudito movendo o cursor de JAWS de cada vez tabixo uma linha. * SayCharacterPhonetic - Usa pronúncia especial rege para ler o caráter localizado à posição do cursor ativo. Assim, UM é alfa pronunciado, B bravo, etc. As associações entre caráter e as pronúncias fonéticas deles/delas são feitas dentro o [PhoneticSpell] seção de. arquivos de JCF. Quais palavras são usadas pode ser mudado pelo usuário, se desejou. SayControlInformation - Manivelas a oração de controles para os quais SayWindowTypeAndText e funções relacionadas não descrevem o controle suficientemente. Esta função é projetado para falar um controle que requer costume que processa (qualquer controle para o qual SayWindowTypeAndText não falam o nome e tipo do controle corretamente). Esta função é projetada para honrar as colocações de modo de produção do usuário para cada componente da descrição do controle. Esta função leva seis parâmetros, cinco de que são parâmetros de fio. O primeiro parâmetro é a manivela de janela do controle que será falado. Os próximos cinco parâmetros incluem um parâmetro para cada componente da descrição de um controle. Cada parâmetro de fio tem um Modo de Produção correspondente. Os 5 parâmetros de fio são strControlName de Fio = Ou OT_DIALOG_NAME, OT_DOCUMENT_NAME, ou OT_CONTROL_NAME, dependendo do tipo de janela que será falada, strControlType de Fio = OT_CONTROL_TYPE, strControlState de Fio = OT_ITEM_STATE, Amarre strContainerName = OT_CONTROL_GROUP_NAME, e strContainerType de Fio = OT_CONTROL_TYPE. Esta função trtablha construindo um fio fundado nos cinco componentes da descrição de controle, só somando cada componente se o usuário especificou que este artigo deveria falar no nível de verbosidade atual. Então esta função chamadas o Say função com o fio construído como o primeiro parâmetro e OT_NO_DISABLE como o segundo parâmetro. * TsayFocusRect - Diz os conteúdos de um retângulo de foco. Lucros RETIFICAM se qualquer texto fosse falado, FALSO caso contrário. Uma declaração de TrackFocusRect=1 deveria ser somada o [OSM] seção do JCF da aplicação arquiva para esta função para trtablhar corretamente. * SayFocusRects - Diz os conteúdos de retângulos de foco. Se houver só um tal retângulo, isto é precisamente como SayFocusRect. Se há mais que um, isto, função diz os conteúdos de tudo deles, enquanto SayFocusRect diz só o primeiro. Uma declaração de TrackFocusRect=1 deveria ser somada o [OSM] seção do o JCF de aplicação arquivam para esta função para trtablhar corretamente. * SayChunk - Fala o pedaço grosso de informação para a qual o cursor ativo está apontando. Um "pedaço grosso" é texto e informação de gráfico nas que foram escritas à tela uma única operação. Porém, SayChunk é semelhante a SayField que o SayField funcionam usa lógica para determinar o texto que será falado, enquanto SayChunk simplesmente leituras o texto no que foi armazenado o Fora Modelo de Tela como uma única unidade. * SayField - Lê o campo de texto onde o cursor ativo está apontando. Um "campo de texto" é uma seção ou bloco de texto que tem um atributo comum, i.e., tipo negrito, sublinhado, itálicos, ou strikeout. O uso do atributo deve ser contíguo. O SayField funcionam usa lógica para determinar o texto que será falado, enquanto o SayChunk simplesmente funcionam lê o texto que foi armazenado nas JAWS Fora Modelo de Tela como uma única unidade. * SayFrame - Fala os conteúdos da armação especificada. * SayFrameAtCursor - Todo o texto dentro dos limites da armação que contém o cursor ativo é falado. * SayInteger - Fala numérico, dados de inteireza, freqüentemente os conteúdos de uma variável de inteireza. * SayParagraph - Lê o parágrafo atual desde o princípio * SaySentence - Lê a oração que contém o caráter no qual o cursor ativo é posicionado. * SayUsingVoice - Fala um fio de texto que usa um jogo específico de características de fala chamado contexto de voz. * SayCell - Quando em uma mesa ou planilha eletrônica, fala os conteúdos da cela atual. * SayColumnHeader - Quando em uma mesa ou planilha eletrônica, fala os conteúdos do cabeçalho de coluna. * SayRowHeader - Quando em uma mesa ou planilha eletrônica, fala os conteúdos do cabeçalho de fila. 5.3.2 que se mudam a Tela Ao redor Antes de você tentar ler algo da tela com um script, você terá que mover um dos cursores ao local do artigo provavelmente você deseja ler. Então, é importante para entender algo sobre cursores. Para essas JAWS usando sem uma exibição de Braile, há quatro tipos de cursores, o cursor de PC, o cursor de JAWS, o cursor Invisível, e o cursor de PC Virtual. Esses usando uma exibição de Braile terão um quinto cursor, o cursor de Braile. (Este cursor só é usado interiormente pelos scripts de Braile e nunca deveria ser partido em depois que um script completar seu trtablho.) Se você está editando ou está entrando em texto, o cursor de PC é onde seriam colocados caráter quando você digitar. (Isto que edita ou forma de inserção de texto do cursor de PC também é chamada um sinal de intercalação.) Porém, quando você está usando um cardápio ou tabbing por algumas seleções como botões em uma caixa de diálogo, não há nenhum sinal de intercalação na tela. Nestes situações, o cursor de PC é o foco. Se você deseja ler outras áreas de uma janela ou ler uma parte da tela onde o cursor de PC não pode ir, você pode trocar ao cursor de JAWS. O cursor de JAWS pode ser movido em qualquer lugar dentro dos limites da real janela atual, tornando isto possível explorar áreas da tela onde o cursor de PC não pode ir. Uma real janela está definida como um janela que tem um título. Isto significa que seu cursor de JAWS normalmente é restringido só a movimento dentro dos limites da janela de pai nivelada mais alta com um título, a partir da janela você é atualmente dentro. Isto é o que nós queremos dizer quando nós dissermos que o cursor de JAWS é restringido pelos limites da real janela atual. (Se você deseja restringir o cursor de JAWS à janela que você está atualmente dentro, até mesmo se não for uma real janela, você pode fazer assim usando a combinação de batida de tecla, INSERT+R.) Desde o cursor de JAWS sempre move o ponteiro de rato a seu local, o ponteiro de rato sempre é posicionado e pronto ser clicado no local das JAWS cursor se você deveria decidir fazer assim. O terceiro tipo de cursor é chamado o cursor Invisível. De um modo é há pouco igual o cursor de JAWS como seu movimento também é só restringido pelos limites da real janela, mas não tem nenhuma entidade visível na tela desde que não traz o ponteiro de rato com isto. O Virtual Cursor de PC é um caso especial do cursor de PC que é virado automaticamente em em certas aplicações como Internet Explorer 5, Outlook/Outlook Express, e Eudora 4.X onde um browser de Microsoft ou espectador de estilo de browser está sendo usado. O cursor de PC Virtual é criado dentro de um pára-choque de JAWS especial e é empregado para permitir o usuário para ter um cursor que pode navegar ao redor da janela de espectador embora aquele espectador não tenha um PC normal ou sinal de intercalação de fato. O usuário está navegando de fato no pára-choque virtual criado por JAWS e tatos como se navegação estivesse acontecendo dentro de um processador de textos tipo de aplicação. Isto faz leitura em tais aplicações muito mais fácil. Como nós usamos estes cursores? É geralmente não prático e freqüentemente impossível ir explorar ao redor da tela com o cursor de PC. Então, antes de nós fôssemos ler algum texto da janela, nós normalmente primeiro interruptor para um dos outros dois cursores. A pessoa pode usar as JAWS ou o cursor Invisível quase para fazer a leitura tão até certo ponto para você, é há pouco uma questão de escolha. Porém, há algumas situações onde você definitivamente quererá usar um destes dois cursores em preferência para o outro. Se você planejar clicar um botão ou entrar alguma outra em ação com o rato, será necessário usar o cursor de JAWS. Desde que o ponteiro de rato acompanha o cursor de JAWS em suas viagens, é então uma questão simples para clicar o rato como já está na posição correta. Se você não deseja mover o cursor de JAWS de sua posição atual, ou não haverá qualquer necessidade para fazer tique-taque em qualquer coisa, o cursor Invisível é a melhor escolha. Há uma situação particular que vem notar quando você definitivamente não quererá mover o cursor de JAWS. Às vezes em Windows, texto de informação se aparecerá em algum lugar na tela, normalmente os estados enfileiram, quando o ponteiro de rato está em um local particular. Se você mover o cursor de JAWS para ler o texto, o ponteiro de rato moverá com isto, e o texto desaparecerá. Nesta situação, você tem que usar o cursor Invisível para ler tal texto. Em geral, é uma idéia boa para usar o cursor Invisível para ler texto quando nenhum clicar for necessário, a menos que haja uma razão particular para usar o cursor de JAWS. Em alguns casos, é necessário mover um dos cursores como o cursor de JAWS, embora você queira isto para estar de volta em seu local original quando o script for terminado. Por isto, há o SaveCursor e funções de RestoreCursor que você pode usar para repor tudo como estava antes de seu script foi executado. Aqui é uma lista das funções que você pode usar selecionar e manipular os cursores. * PCCursor () - Ativa o Cursor de PC. * JAWSCursor () - Ativa o Cursor de JAWS. * InvisibleCursor () - Ativa o Cursor Invisível. * BrailleCursor () - Ativa o cursor de Braile. * RouteBrailleToPc () - Move o cursor de Braile ao cursor de PC. * RouteBrailleToJAWS () - Move o cursor de Braile ao cursor de JAWS. * RouteJAWSToBraille () - Move o cursor de JAWS ao cursor de Braile. * RoutePCToBraille () - Move o cursor de PC ao cursor de Braile, se possível. * RoutePCToJAWS () - Move o Cursor de PC ao Cursor de JAWS, se possível. * RouteJAWSToPC () - Move o Cursor de JAWS ao Cursor de PC. * RouteJAWSToInvisible () - Move o Cursor de JAWS ao Cursor Invisível. * RouteInvisibleToPC () - Move o Cursor Invisível ao Cursor de PC. * RouteInvisibleToJAWS () - Move o Cursor Invisível ao Cursor de JAWS. * SaveCursor () - Economiza o cursor ativo e sua posição. * RestoreCursor () - Reativa o cursor economizado e restabelece isto a sua posição original. O próximo grupo de funções é usado para mover o cursor. * PriorCharacter () - Move o cursor ativo ao caráter anterior. * PriorWord () - Move o cursor ativo à palavra anterior. * PriorLine () - Move o cursor ativo à linha anterior. * NextCharacter () - Move o cursor ativo ao próximo caráter. * NextWord () - Move o cursor ativo à próxima palavra. * NextLine () - Move o cursor ativo à próxima linha. * NextParagraph - Move o cursor ativo ao começo do próximo parágrafo. Se o cursor de PC é ativo, e o próximo parágrafo já não é visível, então, texto na janela enrolará para trazer isto em visão automaticamente. * NextSentence - Move o cursor ativo ao começo da próxima oração. Se o cursor de PC é ativo, e a próxima oração já não é visível, então texto, na janela enrolarão trazer isto em visão automaticamente. * PriorParagraph - Move o cursor ativo ao começo do parágrafo anterior. Se o cursor de PC é ativo, e o parágrafo anterior já não é visível, então texto na janela enrolará para trazer isto em visão automaticamente. * PriorSentence - Move o cursor ativo ao começo da oração anterior. Se o cursor de PC é ativo, e a oração anterior já não é visível, então, texto na janela enrolará para trazer isto em visão automaticamente. * JAWSHome () - Move o cursor ativo ao começo da linha. * JAWSEnd () - Move o cursor ativo ao fim da linha. * JAWSPageUp () - Move o cursor ativo ao topo da janela. * JAWSPageDown () - Move o cursor ativo ao fundo da janela. * MoveTo - Move as JAWS ou cursor Invisível às coordenadas de tela especificadas pelo usuário. * MoveToControl - move o cursor ativo a um controle específico dentro de uma janela. Se o cursor de PC é em que quando esta função é chamada, o cursor de JAWS é virado em automaticamente. Caso contrário o cursor ativo é usado. * MoveToFrame - Move o cursor ativo ao topo deixou canto da Armação especificada. Se o cursor de PC é ativo quando esta função é usada, então o cursor de JAWS, é ativado e é movido à posição nova, caso contrário o cursor ativo é movido. * MoveToGraphic - Move o cursor de JAWS, cursor Invisível, ou cursor de Braile em uma direção específica achar um símbolo gráfico na janela ativa. * MoveToWindow - Move o cursor ativo à janela especificada. Se a janela contiver texto, então o cursor é posicionado no primeiro caráter. Caso contrário, é posicionado ao centro da janela. Se o cursor de PC é ativo que quando esta função for usada, então o cursor de JAWS é ativado e é movido à posição nova. * PriorChunk - Move o cursor ativo ao pedaço grosso anterior de texto. Um pedaço grosso de texto é uma seção ou bloco de texto que é escrito uma vez à tela * NextChunk - Move o cursor ativo ao próximo pedaço grosso de texto. Um pedaço grosso de texto é uma seção ou bloco de texto que é escrito uma vez à tela * DownCell - Quando dentro de uma mesa ou planilha eletrônica, move o cursor ativo à cela na mesma coluna mas a próxima Fila. * UpCell - Quando dentro de uma mesa ou planilha eletrônica, move o cursor ativo à cela na mesma coluna mas a Fila prévia. * PriorCell - Quando dentro de uma mesa ou planilha eletrônica, move o cursor ativo à cela na mesma fila mas a coluna prévia. * NextCell - Quando dentro de uma mesa ou planilha eletrônica, move o cursor ativo à cela na mesma fila mas a próxima coluna. Note que Se seu propósito for ler algo localizado na tela, você normalmente seguiria uma função de movimento com um do say funções. Um exemplo disto é mostrado tabixo. JAWSPageDown (); move ao fundo da janela SayLine (); lê a linha movida 5.3.3 Scripts de Leitura criando Agora, olhemos para um uso prático do que nós aprendemos tão longe. Antes de nós olharmos para um real script, aqui são novamente os passos: 1. Primeiro, economize o estado de seu cursor atual, se necessário. Então ative o cursor de sua escolha. 2. Agora mova o cursor ativo a uma posição específica na janela. 3. Selecione a função de leitura apropriada. 4. Restabeleça seu cursor original se você usasse que o SaveCursor funcionam ao começo do script. O seguinte é duas variações de um script que pode ser usado para ler a linha de fundo de uma janela. Há um comentário ao término de cada linha que descreve o função. (Nós previamente mencionamos brevemente comentários na seção em inclua declarações, e os discutirá mais completamente tabixo.) No primeiro script vamos nós troque ao cursor de JAWS, leia a linha de fundo e então deixe o cursor de JAWS ativo ao fundo da janela. script ReadBottomLine (); Começa o script e nomeia isto o nome, ReadBottomLine, JAWSCursor (); Ative o cursor de JAWS RouteJAWSToPC (); Mova o cursor de JAWS ao cursor de PC assegurar isto está na janela que nós estamos trtablhando ; em e não em alguma outra janela em outro lugar na tela. JAWSPageDown (); Mova o cursor de JAWS ao fundo da janela JAWSHome (); Mova o cursor de JAWS ao começo da linha de fundo SayLine (); Fale a linha de fundo da janela EndScript; Fim do script A próxima variação soma o economize e restabeleça cursor funciona e usa o cursor Invisível. Este script lerá os estados enfileiram e então restabelecem o original cursor. script ReadBottomLine (); Começa o script e nomeia isto o nome, ReadBottomLine, SaveCursor (); Economiza o cursor atual e sua posição InvisibleCursor (); Ativa o cursor Invisível RouteInvisibleToPC (); Move o cursor Invisível ao cursor de PC assim está na janela correta. JAWSPageDown (); Mova o cursor Invisível ao fundo da janela JAWSHome (); Mova o cursor Invisível ao começo da linha de fundo SayLine (); Fale a linha de fundo da janela RestoreCursor (); Reajuste o cursor e posicione nós economizamos EndScript; Fim do script Vê como trtablha? Você poderia usar este script para ler o estado enfileire em Microsoft Word. A linha de estado lhe conta o número de página, número de linha, número de coluna e outra informação assim. Se você só quisesse o número de página, você substituiria um SayWord () função seguida por um NextWord () e outro SayWord () para o SayLine () função. Então você ouviria há pouco as palavras: página e o número. Há uma sutileza importante sobre o SaveCursor e RestoreCursor funciona que precisa ser entendido. Estas funções economizam e então restabelecem o tipo de cursor de qualquer cursor é ativo quando a função de SaveCursor for usada. Além disso, se as JAWS ou cursor Invisível é o cursor ativo quando a função de SaveCursor é usado, a posição de cursor também e então é economizada restabelecido pela função de RestoreCursor. Cursores que são ativados e moveram depois da função de SaveCursor é usado não será restabelecido aos tipos originais deles/delas ou posições. Assim, no anterior exemplo, não seria restabelecida a posição do cursor Invisível a menos que aconteceu para ser na ocasião o cursor ativo a função de SaveCursor é chamada. Porém, é possível usar SaveCursor múltiplo e declarações de RestoreCursor em um script. Estas declarações empilharão de muito o mesmo modo que a falta e pilha de scripts de aplicação. Isto significa que, se você fosse usar um segundo Declaração de SaveCursor, e você era ter um cursor diferente ativo que você fez quando você usou a primeira declaração de SaveCursor, é a posição do segundo cursor ativo que seria economizado quando o segundo SaveCursor é executado. Além disso, as declarações de RestoreCursor desfarão as declarações de SaveCursor dentro o ordem inversa. Assim, se você executa duas declarações de SaveCursor e então executa um RestoreCursor, é o segundo SaveCursor que será invertido. Desfazer o primeiro SaveCursor, você teria que executar um segundo RestoreCursor. O exemplo seguinte ilustra o empilhando de SaveCursor função chamadas: script ReadBottomLine (); Começa o script e nomeia isto o nome, ReadBottomLine, SaveCursor (); Nós não sabemos que cursor era ativo, mas Economiza o cursor atual e sua posição InvisibleCursor (); Ativa o cursor invisível SaveCursor (); Economiza o cursor invisível e sua posição RouteInvisibleToPC (); Move o cursor Invisível ao cursor de PC assim está na janela correta. JAWSPageDown (); Mova o cursor invisível ao fundo da janela JAWSHome (); Mova o cursor invisível ao começo da linha de fundo SayLine (); Fale a linha de fundo da janela RestoreCursor (); Reajuste o cursor invisível e posicione nós economizamos RestoreCursor (); Reajuste os usuários cursor original e posicione nós economizamos EndScript; Fim do script Finalmente, se você usa um SaveCursor () em um script, JAWS fazem um RestoreCursor automaticamente () ao término do script, até mesmo se você esquece de pôr a pessoa dentro. JAWS assumem que você quer restabelecer o cursor se você pôs um SaveCursor () no script. Se você usou declarações de SaveCursor múltiplas, JAWS desfarão tudo automaticamente deles em ordem de contrário quando o script é actabdo, até mesmo se você não se lembra de pôr em tudo das declarações de RestoreCursor. 5.4 que reúnem Tudo Agora olhemos para o processo de criar um script, nomeando isto a uma chave, e compilar o arquivo de script assim nós podemos usar isto. Aqui é o plano. Nós criaremos um script para o Gerente de script que lê o número de linha atual. Nós precisaremos do Gerente de script para esta tarefa. Se lembre que nós usamos este editor em uma seção mais cedo (Veja Capítulo 3.) quando nós criamos nossos primeiros scripts. Este tempo, nós deixaremos o Gerente de script faz mais do trtablho para nós. Siga estes passos exatamente: 1. Comece o Gerente de script selecionando isto do cardápio de Utilidades de JAWS. 2. Aperte INSERT+Q para verificar as colocações de Gerente de script está carregado na pilha sobre o arquivo de script de falta e que o nome de programa para o editor de script é JSCRIPT.EXE. Isto significa, claro que, que o arquivo de script que controla JAWS atualmente é JSCRIPT.JSS. Carregar este arquivo assim você pode editar isto, derrube tabixo o cardápio de arquivo com ALT+F e seta até Aberto e imprensa ENTRA. Digite o nome de arquivo, JSCRIPT.JSS, e imprensa ENTRAM. Finalmente, imprensa CTRL+END para levar o sinal de intercalação ao fundo do arquivo de script, o melhor lugar para somar um script novo. 3. Antes de nós na verdade escrevermos nosso script, exploremos a janela para ver o que nós queremos nosso script para ler. Gerente de script tem uma linha de estado ao fundo que contém uma mensagem de ajuda, o número de linha atual e o número total de linhas no arquivo. Nós queremos ler só o número de linha atual com nosso script. Só ter certeza nós sabemos o que nós queremos nosso script para fazer, façamos manualmente primeiro. 4. Comece ativando o cursor de JAWS. 5. Então PÁGINA de imprensa até movimento para a linha de fundo seguida por CASA para mover ao começo da linha de fundo. 6. Agora use INSERT+NUM PAD 5 dizer a palavra atual e você deveria ouvir a palavra "Para." Use a próxima palavra chave (INSERT+NUM PAD 6) ler pela linha. Você agora saiba que a quinta palavra nesta linha é o número de linha atual. Nós sabemos o que nosso script tem que fazer agora. Tem que ativar um cursor, posicione no próprio lugar, e então leu a palavra. OK, reative o cursor de PC e nós seremos começados. 7. Selecione script Novo do cardápio de script, e o diálogo de script Novo se aparecerá. Agora nós temos que nomear nosso script e escrever sua documentação. 8. Quando o diálogo de script Novo se aparecer, o cursor está no campo de Nome de script. Digite SayLineNumber. Esteja seguro a boné o S, L, e N e não ponha em qualquer espaço. 9. Aperte TAB para se mudar para a Lata seja prendido para teclar checkbox e imprensa SPACEBAR conferir isto. Nós queremos prender nosso script depois a uma batida de tecla. 10. Aperte TAB para mover ao campo de Sinopse e digitar, "Leia número de linha atual." 11. Aperte TAB para mover ao campo de Descrição e digitar, "A linha que contém o "cursor de PC. 12. Aperte TAB para mover ao campo de Categoria e digitar, "Diz", porque este script dirá algo. 13. Aperte TAB para mover o Nomeie A campo e imprensa CTRL+SHIFT+L nomear esta batida de tecla a SayLineNumber. 14. Nós não precisaremos de qualquer outro campo preenchido para nosso script, assim imprensa ENTRA em fechar o diálogo de script Novo e inserir nosso script em branco na área editando. 15. Nós temos um script agora começar declaração com o nome de script e uma declaração de EndScript. Há alguns linhas de espaço em branco entre para nós pordes em nossas declarações de script e o cursor é posicionado aceso das linhas em branco. Use o PARA CIMA chave de SETA até que você alcança a primeira linha em branco do script. 16. Este tempo nós não digitaremos nossas funções como fizemos nós ao criar nosso primeiro script. Nós usaremos o diálogo de Função de Suplemento do Gerente de script. 17. Escolha Chamada de Função de Suplemento do cardápio de script, ou use a combinação fundamental quente, CTRL+I. A Suplemento Função diálogo caixa se aparece e o cursor é colocado dentro o nome de função edita campo. Também há uma lista de funções exibida em baixo do campo de nome de função. Você pôde tab até a lista e arrowing de começo por as funções para achar o um você precisa, mas isso não seria muito eficiente como lá é mais que duzentos deles. JAWS têm um modo melhor, mas requer que você tem alguma idéia do nome de função. 18. Há pouco igual mais cedo, em nosso exemplo nós precisamos começar com economizar o cursor e posição. A função é SaveCursor (), mas nós só precisamos apertar o S como o Insira ferramenta de Função começa procurando assim que você comece datilografia. SaveCursor () é a primeira função que começa com um S. Notice que como foco se mudou para SaveCursor (), uma mensagem de ajuda era erudita que explicou como esta função é usada. 19. Imprensa entra e esta função é colocada em nosso script. Fácil não é? Agora ativemos o cursor Invisível. Nós usamos o cursor Invisível aqui como nós há pouco queira ler o número de linha e retorno. Nenhum senso arrastando o rato conosco, assim nós não usaremos o cursor de JAWS. 20. Imprensa ENTRA para inserir uma linha nova e então imprensa CTRL + eu novamente. 21. A função da que nós precisamos este tempo é InvisibleCursor (). Nós teremos que digitar dois caráter este tempo como InvisibleCursor () não é a primeira função que começa com um eu. Digite lentamente de forma que você pode ouvir cada função como é realçado. Uma vez você ouve InvisibleCursor (), imprensa ENTRA para colocar isto em nosso script. 22. Use o mesmo procedimento para somar o resto de nossas funções nesta ordem: RouteInvisibleToPC (), JAWSPageDown (), JAWSHome (), NextWord () cinco vezes, SayWord () e RestoreCursor (). 23. Aperte CTRL + S para compilar o arquivo de script. Se você não cometesse nenhum erro, você deveria ouvir o "compile mensagem completa." Se não, repita os passos prévios até você pode compilar sem um erro. Se você adquirir um erro, o Gerente de script posicionará o sinal de intercalação próximo onde pensa que o erro é assim você terá um melhor chance de achar isto. 24. Agora teste seu trtablho apertando CTRL+SHIFT+L para ouvir o número de linha atual. Tente alguns variações gostam de ler a linha inteira em vez da palavra. Então some uma mensagem que diz "número de linha" de fato antes disto fala o número. Quando você sinta confortável com este processo, ou continua com a próxima parte, enquanto "Criando script Avançado Arquiva, ou salta dentro e escreve para alguns scripts o estado sem alguns tempo. Lição de casa #2 Aqui é sua segunda lição de casa. Como você provavelmente saiba, a maioria das janelas tem três estados, minimizou, restabeleceu, e maximizou. No canto de mão direita superior da maioria das janelas, há três botões. O primeiro é minimizar, e o último é íntimo. O mediano ou pode ser restabeleça ou maximiza, enquanto dependendo da corrente estado de janela. Movendo e lendo o botão mediano, você pode determinar o estado de janela. "Se diz restabeleça símbolo", então a janela é maximizada. Se isto diz "maximize símbolo", então a janela é restabelecida. Sua tarefa é acrescentar um script ao arquivo de script de falta, DEFAULT.JSS que lerá este botão. Obviamente, testar seu script corretamente, tenha certeza você está em uma janela que tem estes botões. A janela de Gerente de script servirá bastante bem. Depois que você escrevesse isto script, você poderá determinar o estado da janela atual com uma batida de tecla. Nós queremos que você use o cursor de JAWS para fazer a leitura para esta tarefa, e você deveria ter certeza que o cursor de JAWS é devolvido a sua posição original até que os fins de script. Assume que o cursor de PC é ativo quando você começar o script, e tem certeza é ativo quando o script for terminado. Você pode carregar o arquivo de script de falta escolhendo o Gerente de script da Utilidade de janela de JAWS cardápio e carregando DEFAULT.JSS então. Um modo alternativo de fazer isto é apertar CTRL+SHIFT+0 na fila de número. Isto abrirá o Gerente de script automaticamente e carrega o arquivo de DEFAULT.JSS. Acrescente seu script ao fundo deste arquivo. Uma possível resposta pode ser vista em Apêndice UM (Veja Capítulo 14.1.), mas não olha a isto até que você teve uma prova a escrever este script. Crédito extra - Se você realmente estiver sentindo adventuresome, tente modificando o anterior script para ser um pequeno mais sofisticado. Em vez de há pouco ler o Maximize ou Restabeleça símbolos, use Se-então, ElIf, Outro, GetWord, e Diz funções para decidir o que o estado da janela é e que mensagem para falar. Se a janela está mostrando um Restabeleça símbolo, tenha o script dizer "Maximizado." Se um Maximize símbolo está mostrando, tenha o script dizer "Restabelecido." Se não acha qualquer um destes dois símbolos, tem diz não "pôde achar o símbolo." Sugestão - um gráfico rotulado como um Restabeleça ou Maximize símbolo pode ser tratado como texto, e seu rótulo pode ser lido e pode ser manipulado com as mesmas funções que são usado para puro texto. Uma possível resposta para este problema também está em Apêndice o A. (Veja Capítulo 14.1.) Lição de casa #3 E há pouco para diversão, aqui é sua terceira lição de casa. Windows vem com um programa gravador são chamado Registrador São. Este programa normalmente pode ser achado na pasta de papéis de Multimídias da pasta de papéis de Acessórios do Cardápio de Começo. Abra, e explore ao redor da janela de Registrador Sã com seu cursor de JAWS se você não for familiar com este programa. Você achará que há vários botões para jogo, parada, registro, etc. Você também achará que a quarta linha do topo tem um contador que lhe fala quantos segundos jogou e quanto secunda muito tempo o arquivo é. Carregue qualquer arquivo em seu computador com um. extensão de WAV que usa o Aberto Diálogo do cardápio de Arquivo. (Você pode achar muitos. WAV arquiva na pasta de papéis de C:\WINDOWS\MEDIA.) Clique o botão de jogo para começar jogando o arquivo, então clique o botão de parada antes do arquivo fim jogar. (Se você preferir usar o teclado para fazer isto, as chaves quentes para estas duas funções são CTRL+P e CTRL+S, respectivamente.) Se você olha novamente para os decorreram o contador de tempo, você verá que há agora que números que indicam quanto tempo decorreram fora do tempo total. Nós queremos que você escreva um script para o JSS desta aplicação arquiva (SNDREC32.JSS) que lerá este contador para você com uma batida de tecla. O anúncio deveria estar na forma "Atual tempo está fora segundos de X de "segundos de Y. O X e valores de Y serão obtidos da exibição de Registrador Sã, e o resto do anúncio deveria ser criado de Say declarações. Use o cursor Invisível para fazer a leitura, e devolva o cursor começando ao estado original quando terminado. Uma possível solução para este problema é mostrado em Apêndice o A. (Veja Capítulo 14.2.) Separe II: Arquivos de script Avançados criando 6 Windows Programa Estrutura Você ouviu as pessoas provavelmente usarem condições como classe de janela e manivela de janela em discussões aproximadamente como são estruturados programas de Windows. O que gostam condições este mau? Nesta seção, nós explicaremos hierarquia de janela, identificação, e estrutura assim você pode fazer uso das funções de script que examinam e comparam estes artigos. A primeira pergunta é o que é uma janela? Bem, isso pareceria ser simples. Programas corridos dentro de janelas. Até mesmo JAWS têm uma janela. Isso é verdade. A janela de JAWS é uma janela, mas poderia o pegar de surpresa saber que todo campo de entrada, botão, e outro controle também é uma janela. Pelo menos deveria ser. Como todas as outras regras em programas de computação, não é seguido sempre. Um programador pode escolher criar controles, como campos de entrada, sem lhes fazer janelas atuais. Programas assim os mais difíceis são fazer acessível porque não há nenhum modo simples para identificar e falar os vários controles. Estes programas precisam de escritura de script até mesmo mais porque os scripts nos arquivos de falta não falarão estas janelas corretamente. Para o momento, assumiremos nós que o programador nomeia cada controle para uma janela. Sons complicados não fazem isto? Vejamos se nós pudermos ordenar isto fora. 6.1 hierarquia A maioria das pessoas que nunca operam realmente no ambiente de Windows entende isso que a palavra "janela" verdadeiramente meios com respeito a este ambiente. Claro que eles percebem que a coisa retangular grande que se aparece na tela quando eles abrem que uma aplicação nova é uma janela, e eles provavelmente também pensam na área de texto da palavra deles/delas processador como uma janela, mas há muito mais para isto que isso. Em a maioria das aplicações, toda caixa de diálogo, cardápio, botão, edita campo, listbox, etc., é de fato um separado janela com um ou mais números de identificação que podem ser usados para recorrer a isto. Estas contagens de janelas que podem estar presente em sua tela em qualquer uma vez não são fortuitamente derrubado lá, eles estão relacionados com uma hierarquia especial que permite o sistema operacional de Windows e os programadores que trtablham dentro disto para manter rasto deles tudo. Vai tudo faz sentido mais se nós olharmos para a hierarquia de janelas no sistema. A metáfora freqüentemente usada é um de pais e crianças. Aqui é como trtablha. Seu topo da escrivaninha de computador é o pai de todas as janelas de aplicação. Isso faz a Janela de JAWS, o janela de seu processador de textos e o browser de Internet janela todas as crianças do topo da escrivaninha. Estas janelas estão tabixo todo o um nível do topo da escrivaninha, assim eles são todas as crianças do topo da escrivaninha ao mesmo nível lógico. Isto lhes faz todos os semelhantes de um ao outro, e, quando você condições de encontro posteriores como PriorWindow e NextWindow, a referência é a mover entre janelas semelhantes ao mesmo nível. OK, agora vamos para o próximo nível. O processador de textos tem várias janelas de criança: a área de texto, a barra de cardápio, o toolbar e a linha de estado. Estes é todas as crianças da processador de textos janela e é, eles, todas as crianças ao mesmo nível lógico. Você está começando a adquirir isto? Quando você pede abrir um arquive no processador de textos, uma janela de criança se aparece de forma que você pode procurar o arquivo. Está freqüentemente chamado uma caixa de diálogo, mas no esquema principal de coisas, é uma janela de criança ao processador de textos, seu pai. Agora pense na caixa de diálogo de Arquivo Aberta como um pai e então você achado que o campo de Nome de Arquivo é uma criança janela do diálogo. Assim é todos os outros campos dentro do diálogo. Estes são todas as crianças do pai dialogam e são tudo ao mesmo nível lógico. Cada janela é uma criança à janela um nível para cima isso gerado ou gerou isto, e cada janela está tabixo um pai às janelas um nível que gera. Por via dado dúvida você está tendo uma pequena dificuldade que visualiza tudo disto, tentemos usando uma analogia. A maioria das pessoas está familiarizado com estrutura de árvore de diretório, ou, de trtablhar em DOS ou Windows Explorer. Em sua unidade de disco, say seu C dirigem, C :\ é o pai de todos os outros diretórios em seu passeio. Todos os subdiretórios um nível tabixo de C :\ é as crianças daquele pai e está ao mesmo nível lógico. Assim, se você tem subdiretórios nomeado Eudora, JAWS37, MyDocuments, Reciclou, e Windows em seu sistema, eles vão tudo esteja tabixo um nível de C :\. Elas são todas as crianças diretas de C :\ e está tabixo todo o um nível lógico. Para os propósitos de estrutura de árvore de diretório e hierarquia de janela, pode assumir você que estando ao mesmo nível lógico significa que todos os sócios foram gerados ou geraram pelo mesmo pai. Se lembra que nós dissemos que pudessem ser usados o PriorWindow e comando de NextWindow para mover a janelas ao mesmo nível lógico? Bem, em uma árvore de diretório, isto seria análogo a mover ao subdiretório anterior e próximo subdiretório de uma árvore de diretório. Se nós abrirmos o subdiretório de JAWS37, nós veremos quatro novo subdiretórios, Ajuda, Manuais, Colocações, e Tecnotes. Estes quatro subdiretórios estão tabixo todo o um nível de JAWS37, são as crianças de JAWS37, e são ao mesmo nível lógico como um ao outro, dois níveis tabixo de C :\. Isto pode, claro que, continue até que nós alcançamos o mais baixo nível lógico de uma filial particular. O parent/child estrutura de trtablhos de Windows muito o mesmo modo como uma estrutura de diretório. Cada aplicação é uma filial da árvore, e são geradas janelas de criança disto. Todas as janelas um nível tabixo da aplicação de pai as crianças estão ao mesmo nível lógico, um nível tabixo do pai. Cada uma destas crianças pode gerar as crianças de o próprio deles/delas, e estas crianças estão triste três níveis da aplicação de pai. Mudança de prova para cima e para baixo pelos vários níveis lógicos de filiais diferentes de sua árvore de diretório em Windows Explorer, e você deveria adquirir um sentimento melhor para esta hierarquia de parent/child. 6.2 Windows identificando O programador de aplicação nomeia vários identificadores a cada janela. Estes identificadores permitem a janela em questão recorrer a unambiguously. Para exemplo, cada tem uma Classe de Janela, um Tipo, um Código de Tipo, um Código de Subtipo, e um Controle ID. A Classe de Janela e Código de Tipo nos falam se é um edite campo, um abotoe, ou algum outro tipo de janela. O Código de Subtipo pode dar informação mais específica sobre a janela, enquanto diferenciando, por exemplo, entre um botão regular e um radiobutton. Assim, a classe de janela, Digite, Código de Tipo, e Código de Subtipo nos permite categorizar a janela. Listado tabixo é definições mais precisas destes quatro categorias e as JAWS funções embutidas que são usado durante script que escreve para os obter. 6.2.1 janela Classifica, Tipos, Códigos de Tipo, e Códigos de Subtipo * Classe de janela - Esta é uma categoria que denota um pouco de informação sobre o que uma janela é e faz. Por exemplo, uma Classe de Janela pode ser um edite campo, um listbox, ou um botão. Isto já está provendo um pouco de valiosa informação sobre a janela desde que nós sabemos que um listbox é algo completamente diferente e terá totalmente exigências de leitura distintas de um botão. O problema é aquela Classe de Janela sempre não provê informação que é suficientemente detalhado para nossos propósitos. Por exemplo, conferindo a Classe de Janela devolverão a mesma informação para um botão, radiobutton, e checkbox tudo dos quais têm a Classe de Janela de botão. Obviamente, nós vamos precisar de informação mais detalhada em alguns exemplos. Podem ser usadas as outras categorias de janela listadas tabixo para prover esta informação. Além disso, alguns programadores usam janela de costume classifica que tem nomes estranhos e irreconhecíveis que não são compreendido através de JAWS. Nós vamos precisar de algum método de contar JAWS como lidar com estes janela de costume classifica, e isto é discutido tabixo. A Classe de Janela é obtida com a função, GetWindowClass. * Tipo de janela - Como com Classe de Janela, lucros de Tipo de Janela um fio ou nome que são descritivo da janela. Esta categoria às vezes pode dar informação mais específica sobre certas janelas. Porém, pedindo o Tipo de Janela Devolverão a mesma informação sobre uma janela como pedindo a Classe de Janela se nenhuma mais informação específica está disponível. Por exemplo, a Classe de Janela e Tipo de Janela de um edite campo será exatamente o mesmo. Porém, se informação mais específica está disponível, o Tipo de janela pode ser usado para ordenar isto fora. Assim, considerando que a Classe de Janela de um botão, radiobutton, e checkbox sempre é "botão", a Janela Digita destes três serão informadas janelas como "botão", "radiobutton", e "checkbox." Isto informações mais específicas nos permitirão contar para JAWS o que fazer para cada destes tipos. Se o programador usou que janela de costume classifica, enquanto pedindo o Tipo de Janela então devolverão um fio que diz que o Tipo de Janela é desconhecido. Porém, quando um tipo de janela de costume é reclassified a uma janela conhecida classifique (veja tabixo), o Tipo de Janela devolverá o nome da janela de reclassified e, assim, nos conte isso que a janela faz. Um problema com o Tipo de Janela é que o fio devolveu por esta função sempre está em inglês e, assim, não é muito útil para esses usando JAWS em outros idiomas. Por isto, o Código de Tipo de Janela foi desenvolvido. O Tipo de Janela é obtido com a função, GetWindowType. * Código de Tipo de janela - Pedindo os Janela Tipo Código lucros um número em vez de um fio. Este número é traduzido em um fio reconhecível através de definições constantes que pode ser achado no arquivo HJCONST.JSH. Por exemplo, neste arquivo você verá linhas como WT_Button =1, WT_Edit = 3, WT_ListBox = 4, e WT_ScrollBar = 5. O WT antepõem da constante lhe fala que esta é uma constante que recorre a um Tipo de Janela. Enquanto o Código de Tipo de Janela não actab provendo mais nenhuma informação que o Tipo de Janela, tem a vantagem de ser idioma independente. Desde que os mesmos números sempre são devolvidos para um determinado tipo de janela, os números, pode ser comparado a um fio em qualquer idioma desejado. O Código de Tipo de Janela é obtido com a função, GetWindowTypeCode. * Código de Subtipo de janela - Como com o Código de Tipo de Janela, o Código de Subtipo de Janela devolve também uma inteireza. Os Códigos de Subtipo de Janela são traduzidos em cordas usar as mesmas definições constantes como para Código de Tipo de Janela. A única diferença é que o Código de Subtipo de Janela proverá informação mais detalhada, se disponível. Se não, ambas as funções devolverão a mesma informação. Por exemplo, um RadioButton devolverá um Código de Tipo de 1 (WT_Button) mas um Código de Subtipo de 19 (WT_RadioButton). O botão de Começo localizado na barra de tarefa também devolverá um Código de Tipo de 1 (WT_Button) mas devolverá um Código de Subtipo de 32 (WT_StartButton). Semelhantemente, GetWindowTypeCode devolva WT_TABCONTROL para a Barra de Tarefa considerando que GetWindowSubtypeCode devolverá WT_TASKBAR. Você quererá usar GetWindowTypeCode quando você não desejar ter a informação mais específica que é devolvida por GetWindowSubtypeCode. Códigos de Subtipo de janela também são idioma independente. Eles podem ser obtidos com a função, GetWindowSubtypeCode. A razão que estes categorias de janela são importantes a usuários de JAWS é que JAWS se comportarão diferentemente, enquanto dependendo de que categoria de janela tiver o foco. Por exemplo, se o foco é em um edite campo, rastos de JAWS o sinal de intercalação ou ponto de inserção. Se você batesse o TABIXE chave de SETA, JAWS falarão a linha de texto para qual seu sinal de intercalação move. Por outro lado, se você está em uma caixa de lista ou cardápio, rastos de JAWS são usados o destaque ou lightbar como as chaves de seta para mover isto para cima e para baixo o lista. JAWS sabem fazer estas coisas por causa dos scripts com os que são associados o para cima e para baixo seta digita o DEFAULT.JSS script arquivo. Estes scripts contêm lógica que decide o que fazer baseado na categoria da janela que tem o foco quando você usa um destas chaves. Se você examina o SayPriorLine e SayNextLine scripts no DEFAULT.JSS arquivam, você verá que são tomadas decisões sobre o que falar baseado nos Códigos de Tipo e subtipo Codifica das janelas que são atuais quando o script é invocado. Como com Tipos de Janela, Códigos de Tipo, e Subtipo Codifica, há um jogo de classes de janela standards que são usado pela maioria dos programadores, e as JAWS deixam de comparecer scripts contêm a lógica necessária para permitir próprio falar deste standard classifica a maioria do tempo. Porém, Classes de Janela sempre não são tão standards quanto estas outras categorias. Se você alguma vez precisou usar a Janela Classifica diálogo no Gerente de Configuração designar novamente um costume ou Classe de Janela de desconhecido, você sabe que às vezes programador criará classes de janela de costume que nós precisamos informar JAWS aproximadamente. Desde que estes que classes de costume são, por definição, sem padrão, JAWS não têm nenhuma idéia o que fazer com eles. Então, nós temos que usar o Gerente de Configuração para comparar a classe desconhecida a um das classes standards assim JAWS saberão se comportar quando encontrar isto. Este processo é chamado reclassifying ou designando novamente a Classe de Janela. Se você nunca usou este procedimento, ou use a combinação fundamental INSERT+7 ou o combinação fundamental INSERT+F2 seguiu por W e ENTRA para invocar o Janela Classe re-indicação diálogo, e explora os vários controles para ficar familiar com isto. Uma vez você tem reclassified uma janela comparar isto com uma classe standard, deveria falar corretamente. Às vezes você pode ter que tentar mais que uma classe figure fora qual a pessoa trtablha melhor. 6.2.2 controle ID e Manivelas de Janela O Controle ID é um número arbitrário que serve como um identificador que o programador usa para marcar cada janela no programa dele. É obtido com a função, GetControlID. O Controle ID, distinto a Classe de Janela, não tem nenhum significado especial, mas pode ser usado para recorrer a uma janela particular. Idealmente, nenhuma dois janela em um programa deveria ter o mesmo Controle ID, mas eles às vezes fazem de qualquer maneira. Se você sabe acessar o Controle ID, e, se é sem igual dentro da aplicação você está escrevendo scripts para, então você pode contar para JAWS fazer certas coisas se achar que você é focalizado na janela com o Controle particular ID você identificou. Um exemplo onde isto é extremamente útil está em aplicações onde os botões estão rotulados com pedaço desenhos de mapa em vez de rótulos de texto. Normalmente, JAWS falarão o rótulo de texto de um botão quando você TAB para isto, mas se o rótulo for um desenho, há nenhum nome a ser falado. Determinando o Controle números de ID do vário mordido botões de mapa, a pessoa pode escrever um script que falará o nome de um botão quando o foco mover a um botão com um Controle particular ID. Claro que, há nenhum modo para assegurar que duas janelas em programas diferentes não terão o mesmo Controle ID. Então, para prevenir confusão, nomeia o sistema um identificador sem igual, chamou uma manivela de janela, para toda janela quando é acessado durante uma determinada sessão. Manivelas de janela são números, mas eles não são unchanging valores como um Controle ID. Contanto que a manivela seja nomeada ativamente a uma janela particular, pode ser usado se referir e identificar aquela janela. Uma vez a manivela é nomeado, permanece ativo contanto que a janela exista. Porém, quando uma janela é destruída, renuncia sua manivela. Se a janela é depois reinvoked, terá uma manivela diferente provavelmente. Considerando que o sistema nomeia estas manivelas como janelas é usado, a manivela nomeada a uma janela neste dia pode não ser o mesmo como é amanhã. Uma analogia boa para a manivela de janela seria o dispensador de ingresso numerado usado em muitas padarias e delicatessens. Quando você o entra leve um número do dispensador, e este número se torna sua manivela. Hoje seu número poderia ser 31, e quando o servidor ao contador chamar 31, você sabe que é sua volta. Se você entrar em novamente o próximo dia, seu número provavelmente será diferente. Ainda é sua manivela, mas é diferente do que era o dia anterior. O ponto é, é um sistema de identificação que conta o servidor que está próximo em linha. Use a janela' manivela para identificar isto entre tudo das outras janelas no sistema em qualquer determinado momento. A manivela de janela que usa as funções embutidas pode ser obtida, GetCurrentWindow () e GetFocus (). Por exemplo, um modo para fazer isto seria usar o GetCurrentWindow () função como um parâmetro para o SayInteger () função. Assim, SayInteger (GetCurrentWindow ()) falaria a manivela de janela da janela que contém o cursor ativo. A propósito, este é outro exemplo do uso de funções aninhadas que foram mencionadas mais cedo. Há alguns scripts de falta embutidos que você pode usar para examinar estes e outros tipos de informação de uma aplicação. Nós lhe ensinaremos como os usar "Explorando a Aplicação Com as "Funções de Utilidade. (Veja Capítulo 8.1.) Para agora, processe o seguinte. Aperte CTRL+INSERT+F1. Você deveria ouvir o Controle ID, Classe de Janela, e Manivela de Janela anunciou para a janela na que você é atualmente. Mova ao redor a janelas diferentes e aplicações diferentes para adquirir alguma idéia do tipo de informação esta combinação de batida de tecla pode prover. 7 Blocos de edifício do Idioma de script Nós construímos script arquiva de construir blocos que compõem o idioma de script de JAWS. Pense nesta parte do livro como aprendendo um idioma porque você será fazendo isso exatamente. Da mesma maneira que nosso idioma escrito tem classes de palavras que fazem orações que fazem parágrafos, tão também faz o idioma de script de JAWS tenha declarações isso compõe scripts que compõem arquivos de script. Primeiro, nós aprenderemos como um script individual é ajuntado, e então nós aprenderemos todos os tipos diferentes de declarações neste idioma. Na próxima parte, "script que Escreve Técnicas", nós aprenderemos a pôr script completo arquiva junto e como compilar e os usar. 7.1 o script Como nós dissemos antes, um script é um programa de computação pequeno que controla atividades de JAWS. Podem ser prendidos scripts a uma batida de tecla. Eles não têm que ser, mas qualquer script pode ser. Um script tem que ter os pedaços seguintes nesta ordem exata: 1. Primeiro é o script comece palavra chave. Este simplesmente é o palavra "script" seguido por um espaço. 2. No mesmo seguinte de linha o palavra "script" é o nome de script. Isto é normalmente várias palavras concatenadas isso junto descrevem a ação deste script, como, CloseDocumentWindow. Nota que cada uma das palavras concatenadas é capped inicial, assim JAWS podem ler o nome corretamente. () segue o nome para completar o script começa declaração. Em tudo isto são entrados automaticamente por Gerente de script quando você criar um script. 3. Logo é tudo das declarações variáveis locais seguidas por tudo das funções, operações de aritmética, e declarações de controle de fluxo que você precisa dentro seqüente ordem. Isto poderia ser tão simples quanto há pouco dizendo um fio como nós fizemos em Nosso Primeiro script ou uma operação complexa. 4. A declaração de fim de script, EndScript, sempre é a última linha de um script. Nisto é entrado automaticamente pelo Gerente de script quando você criar um script. O Gerente de script criará a estrutura de script básica corretamente quando você escolher script Novo do cardápio de script ou usa o acelerador combinação fundamental, CTRL+E. Você sempre deveria criar um script nesta moda como o Gerente de script também o incitará para a própria documentação de script e o deixará nomear uma batida de tecla. 7.2 a Função A diferença maior entre scripts e funções são que uma função não pode ser prendida a uma batida de tecla. Ou será chamado de um script ou outra função ou seja ativado por um evento de sistema. É importante para o lembrar sobre algum jargão nós discutimos mais cedo. Esta palavra função tem vários significados ligeiramente diferentes, e é importante para os se lembrar de para a discussão seguinte. Nós estamos a ponto de falar sobre funções que podem ser criadas por você, e nós queremos dizer por este um script você escreve isso não é prendido a uma batida de tecla. Esta é uma função usuário-definida, enquanto significando isto é uma função escrita por você, o usuário. Há também funciona já apresente em script arquiva você pode estar modificando, e estas são funções que foram escritas pelos escritores de script de Henter-Joyce. Estas também são funções usuário-definidas, mas eles estavam definidos por outros usuários, não você. Finalmente, há as funções embutidas que são o edifício bloqueia do idioma de JAWS. Você, o usuário, não pode modifique as funções embutidas como você enlate suas próprias funções ou o ones escritos por outras pessoas. Você pode usar quaisquer destes três tipos de funções como construindo blocos ao escrever scripts ou funções novas, mas as funções embutidas são duras codificado em JAWS, e assim a discussão seguinte não aplica a eles. (Funções embutidas será discutido depois. Veja Capítulo 7.3.5.) Um non-construir-em função os pedaços seguintes têm que ter nesta ordem exata: 1. O tipo de retorno, ou manivela, Int, Objeto, Fio, ou Nulo. 2. A função começa palavra chave. Esta simplesmente é a palavra "Função" seguida por um espaço. 3. No mesmo seguinte de linha a palavra "Função", o nome de função. Isto é normalmente várias palavras concatenadas isso junto descrevem a ação desta função, como, SayFocusedWindow. Note que cada uma das palavras concatenadas é capped inicial. Aquelas JAWS de modo podem falar o nome como se fosse palavras separadas. O nome é seguido por () completar a função começam declaração. Nota que todas as funções deveriam ter designações de tipo de retorno como esses listou debaixo de artigo 1 antes a função começa palavra chave. Estes tipos de retorno foram mencionados mais cedo (Veja Capítulo 4.4.1.) e descreve que tipo de informação é devolvido ao script de chamada quando a função termina corrida. Claro que, uma função pode ser projetada ser chamada e completar sua tarefa sem mandar de volta qualquer informação específica simplesmente para o script de chamada ou função. Neste caso, o retorno é designado como Nulo. Por outro lado, além de completar qualquer outra tarefa, pode a função também mande de volta uma inteireza, fio, objeto, ou valor de manivela ao script de chamada. Se fizer isto, você deveria ver a palavra Int, Fio, Objeto, ou Manivela antes a palavra Função na primeira linha. Nomes de evento de função especiais como AutoStartEvent ou NewTextEvent lhe falam que uma função corre automaticamente quando certo coisas acontecem em uma aplicação. Estas funções normalmente não são chamadas por outros scripts ou funções. Também pode haver parâmetros entre o (e) o qual é usado para passar informação à função que precisará executar seu propósito. Nós discutiremos tudo depois destes em mais detalhe. (Veja Capítulo 7.5.) 4. Então você tem tudo das declarações variáveis locais seguidas por tudo das funções, operações de aritmética, e declarações de controle de fluxo das que são precisadas dentro seqüente ordem. Isto poderia ser tão simples quanto há pouco dizendo um fio com uma função como nós fizemos em Nosso Primeiro script ou uma operação complicada. 5. A declaração de fim de função, EndFunction, sempre a última linha de uma função. O Gerente de script criará a estrutura de função básica corretamente quando você escolher script Novo do cardápio de script. Você sempre deveria criar uma função nisto moda como Gerente de script também o incitará para a própria documentação de função e o deixará nomear parâmetros e lucros. Também nos lembremos de um outro pedaço de jargão. O termo que "chama uma função" significa colocando o nome daquela função em um script ou funciona para ser executado. Você pode chame uma função usuário-definida ou uma função embutida desta maneira. Em muitos casos, regras e procedimentos que também aplicam a funções aplique a scripts. Por exemplo, são declaradas variáveis o mesmo modo em ambos e funções é chamado o mesmo modo em ambos. Também há muitas diferenças. Se nós estamos descrevendo uma faceta de desígnio que só aplica a um script ou só para uma função, nós teremos cuidado mostrar isso. Caso contrário, a regra se aplica igualmente a ambos. 7.3 tipos de Declarações O seguinte é uma lista dos tipos de declarações que compõem scripts. Cada declaração está como uma classe de palavra no idioma de script de JAWS, tem um trtablho específico executar, e tem certas regras associadas com seu uso. 7.3.1 comentários Comentários são linhas de texto em seu arquivo de script que não é declarações executáveis. Eles normalmente usa informam lendo o arquivo de fonte para esses como as declarações trtablho. Podem ser colocados comentários em uma linha por eles ou ao término de uma linha. Comece um comentário com um ponto-e-vírgula. Tudo outro na linha depois que seja tratado como um comentário. Se você precisar de linhas múltiplas para comentários, comece cada linha com um ponto-e-vírgula. 7.3.2 incluem O inclua declaração diz para o compilador que inclua os conteúdos de outro arquivo junto com este arquivo, da mesma maneira que se aquelas informações tivessem sido digitadas no arquivo principal ao ponto do inclua declaração. Conseqüentemente, toda a informação no arquivo incluído são acessíveis pelo arquivo principal do ponto do inclua ao fim do arquivo principal. Isto significa que tudo incluíram serão compilados arquivos junto com o arquivo principal em um, arquivo de JSB grande. Inclua arquivos são arquivos separados com artigos comuns que podem ser utilizável por vários arquivos de script ou o qual você pode desejar manter separe por motivo de claridade ou conveniência. Há dois tipos de inclua arquivos: * Arquivos de cabeçalho são designados pela extensão JSH e contêm declarações variáveis ou constantes. * São designados Arquivos de mensagem com a extensão JSM e contêm declarações de mensagem com os números nomeados deles/delas. Em versões de JAWS antes das 3.0, era às vezes necessário arrombar arquivos de macro pedaços evitar exceder o tamanho de máximo permitido. Isso não é uma preocupação com script arquiva como podem ser eles tão grande quanto você gosta. O inclua declaração tem o nome do arquivo incluído em citações como segue: Inclua "HJGLOBAL.JSH" Se você omitir os aspa, a sintaxe estará incorreta e você adquirirá uma mensagem de erro quando você tentar compilar. Também é assumido que o arquivo ser incluído é contido dentro do idioma (por exemplo, ENU) subdiretório do \ subdiretório de COLOCAÇÕES de seu diretório de JAWS. O seguinte é uma lista do padrão inclua arquivos providos com JAWS e incluiu em DEFAULT.JSS: * HJGLOBAL.JSH - Contém as JAWS de falta variáveis globais. * HJCONST.JSH - Contém as constantes de JAWS de falta. * DEFAULT.JSM - Contém as declarações de mensagem standards se referidas para por DEFAULT.JSS. Como cobrimos previamente nós, se lembra que um arquivo de mensagem é um especial inclua arquivo que nomeia números de mensagem a mensagens comuns. Deste modo o escritor de script pode use o número de mensagem em lugar da mensagem e JAWS observarão o texto atual para a mensagem no arquivo de mensagem. De fato, o número de mensagem há pouco é um constante que tem a mensagem de texto atual nomeou a isto. Todos os arquivos de script transportaram com JAWS têm os próprios arquivos de mensagem separados deles/delas. Use o mesmo nome como seu arquivo de script seguido por. JSM como uma extensão quando você cria seu próprio arquivo de mensagem. Então inclua em seu arquivo de script. Considerando que o arquivo de DEFAULT.JSM contém mensagens útil só para DEFAULT.JSS, HJGLOBAL.JSH e HJCONST.JSH são usados em qualquer arquivo de script que recorre às JAWS variáveis globais e constantes. Lição de casa #4 - Finja você está começando a construir um arquivo de script para uma aplicação chamado JAWSWINS.EXE. Você quer usar inclua declarações para um arquivo de cabeçalho de constantes e variáveis, um arquivo de mensagem para mensagens, e os dois arquivos de JAWS, HJCONST.JSH e HJGLOBAL.JSH. Escreva o inclua declarações exigiram fazer isto. A resposta pode ser achada dentro Apêndice o A. (Veja Capítulo 14.3.) 7.3.3 variáveis Uma variável, como discutimos mais cedo nós (Veja Capítulo 1.3.) e como insinua seu nome, é uma entidade que celebra um valor que pode mudar durante execução de código. (O termo execução é usada por programadores descrever a corrida de código, i.e., um programa de computação como um script. Nós só usamos isto aqui o apresentar ao termo.) Cada variável é de um tipo específico. São armazenados os conteúdos de uma variável em memória pelo programa de JAWS e podem ser usados por seu código de script sempre que você precisa isto. Devem ser declaradas variáveis ou definiram para ter um nome e um tipo antes de eles pudessem ser usados. Cada variável tem que ter um nome distinto para distinguir isto de outro funções e nomes usaram no código. Tenha cuidado para não usar nomes que já são nomeados a funções, variáveis globais e constantes como isto causará compile ou problemas de execução. O seguinte é uma descrição dos tipos de variáveis permitida no idioma de script de JAWS: * Inteireza - UMA variável projetou para celebrar um valor de inteireza. (Uma inteireza é um número inteiro sem um ponto decimal.) É declarado assim: Int MyIntegerVariable Nota que o tipo (Int) é seguido pelo nome distinto nomeado a esta variável (MyIntegerVariable). Uma variável de inteireza contém um número inteiro. Nós usamos uma variável de forma que seu valor pode ser mudado por ações que acontecem enquanto nosso arquivo de script for ativo e assim que nós podemos recorrer ao número através de nome em nossos scripts. As regras seguintes se aplicam ao uso de uma variável de inteireza: 1. Uma variável de inteireza deve ser declarada antes de pudesse ser usado. 2. Seu valor de falta, quer dizer, é nomeado o valor que tem antes de qualquer valor a isto, sempre é 0. * Fio - Segura um fio de caráter. Um fio é um grupo de caráter inclusive cartas, números, que pontuação marca, e espaços. É declarado assim: Amarre MyStringVariable Nós usamos uma variável para representar nosso fio porque o fio que contém pode ser mudado por ações que acontecem enquanto nosso arquivo de script for ativo e de forma que nós pode recorrer ao fio atual através de nome em nossos scripts. As regras seguintes se aplicam ao uso de uma variável de fio: 1. Uma variável de fio deve ser declarada antes de pudesse ser usado. 2. Sua falta sempre é "nula" ou nenhum caráter. Quando você estiver nomeando um valor a uma variável de fio, você tem que pôr o fio entre citações. Por exemplo, a sintaxe seguinte está correta: Deixe StringVariable = "Oi." Note isso em versões de JAWS antes de versão 3, você teve que inserir um espaço entre a citação marca quando você estava conferindo para um valor nulo. Isso tem sido mudado. Nulo é indicado por para aspa sem espaço entre eles. * Manivela - Segura uma manivela de janela. Uma manivela de janela é um número sem igual nomeado pelo sistema a cada janela dentro um atualmente programa corrente. É declarado goste isto: Controle MyHandleVariable Você provavelmente se lembra de nossa discussão mais cedo de identificadores de janela (Veja Capítulo 6.) que a manivela de janela é nomeada pelo sistema e é sem igual a um particular janela. Enquanto uma manivela também é um número inteiro e pode, então, seja manipulado goste de outras variáveis de inteireza, o uso de uma variável de manivela está somente reservado para a identificação de uma manivela de janela. A maioria do tempo nós usamos isto para identificar uma janela particular da qual nós queremos informação. As regras seguintes se aplicam ao uso de uma variável de manivela: 1. Uma variável de manivela deve ser declarada antes de pudesse ser usado. 2. Seu valor de falta sempre é 0. * Objeto - UMA variável projetou para segurar um objeto. Um objeto, com a finalidade do idioma de script de JAWS, recorre aos tipos de presente de objetos em certa Microsoft aplicações como o Escritório 97 apartamento. (Veja Capítulo 7.3.5.9.) É declarado assim: Conteste MyObjectVariable Uma variável de objeto é usada para segurar um objeto que foi devolvido a um script de JAWS ou função. É empregado para obter certos tipos de informação de alguns Aplicações de Microsoft que normalmente são muito difícil ou impossível de simplesmente obter lendo a tela. As regras seguintes se aplicam ao uso de um objeto variável: 1. Uma variável de objeto deve ser declarada antes de pudesse ser usado. 2. É valor de falta sempre é nulo ou vazio. Variáveis podem ser locais quais meios eles só podem ser usados no script onde eles são declarados ou global quais meios dentro os que eles podem ser usados em qualquer script o arquivo de script onde eles estão definidos. Podem ser declaradas variáveis globais no começo de um arquivo de script com o título de grupo, Globals. Coloque este direito de grupo depois do inclua declarações. Variáveis globais também podem ser declaradas dentro um inclua arquivo como é terminado com o arquivo de script de falta e seu inclua arquivo de cabeçalho HJGLOBAL.JSH. Uma vez é incluído, podem ser usadas as variáveis globais declaradas neste arquivo em quaisquer dos scripts de falta. Você deveria criar um arquivo de cabeçalho para variáveis que você pretenda usar em mais de um arquivo de script. Se você criar uma variável global que você só pretende usar com uma aplicação, é uma idéia boa para declarar aquela variável diretamente no arquivo de script em lugar de o arquivo de cabeçalho e incluir o app nomeiam no nome variável. Isto servirá falar para o usuário que isto é um global variável significou para uso por este aqui aplicação. O usuário também deveria entender que uma vez uma variável global foi criada e foi nomeada um valor, aqueles restos de valor, em memória, até mesmo depois da aplicação que usa isto esteve fechado. Se a aplicação é reabrida durante a mesma sessão de computador, as variáveis globais disso, o arquivo de script de aplicação terá os mesmos valores eles tiveram logo antes a aplicação estava fechada. O único modo para clarear uma variável global é descarregar e então recarregue JAWS. São declaradas variáveis locais dentro de um script na primeira declaração depois da declaração de começo de script. Eles têm o título, Var. Aqui é como cada classe de olhares variáveis em um exemplo de um arquivo de script standard: As declarações de declaração seguintes são levadas de WINWORD.JSS, o arquivo de script para Microsoft Word para Windows. Note que variável mais global nomeia começo com a palavra, global, de forma que eles pode ser distinguida facilmente de uma variável local. Nós revisaremos nomeando convenções depois em mais detalhe em "script que Escreve Técnicas." (Veja Capítulo 8.) Globals Amarre GlobalWinwordVersion, Int GlobalCurrentControl, Controle GlobalRealWindow, Amarre GlobalRealWindowName, Int WinWordFirstTime,; só dizer primeiro tempo por mensagem de começo de auto Controle WinWordContextHandle,; leia palavra em contexto Int WinwordFontCode; quando são empurrados botões de fonte Há duas coisas para notar sobre esta lista de variáveis globais. Primeiro, cada linha menos o último tem uma vírgula depois do nome variável. Segundo, alguns, das linhas comentários têm depois do nome variável. O comentário é tudo que se aparece depois do ponto-e-vírgula e pode servir como uma lembrança do propósito do variável. Qualquer vírgula tem que ir antes do comentário. As declarações de declaração de variável locais seguintes são levadas do HotKeyHelp97 () função em WINWORD.JSS, o arquivo de script para Microsoft Word para Windows. Como mostrado, as declarações variáveis se aparecem logo após a função começa declaração. Função HotKeyHelp97 () var controle WinHandle, Verbosidade de Int Aqui novamente, todas as linhas excluem os últimos têm uma vírgula ao fim. 7.3.4 constantes Como discutimos mais cedo nós (Veja Capítulo 1.3.), constantes são um modo de usar nomes facilmente-se lembrados para armazenar duro-para-se lembre de fios de cartas ou números. Pense de uma constante como um número ou grupo de cartas ou palavras que foram determinado ou nomearam um nome novo. Isto é puramente terminado por razões mnemônicas desde que é mais fácil para se lembre de um nome que um número ou grupo longo de cartas ou palavras. Não há nenhuma restrição a quantos nomes constantes que você pode nomear a um número. Por exemplo, nas constantes de JAWS standards arquive, HJCONST.JSH, Retifique e Em é nomeado o valor um. O que que meios são que você pode escrever uma declaração de script conferir se uma condição iguala Verdadeiro, em, ou 1. Eles são tudo consideraram ser uma vez o mesmo valor as declarações constantes foram feitas. Nós recomendamos fortemente constantes usando porque seu mais difícil se lembrar que quando algo for verdade, seu estado é 1, mas fácil entender a diferença entre verdadeiro e falso. Além disso, quando outra pessoa estiver lendo seu arquivo de script, é muito mais fácil eles entenderem o que você estava tentando para fazer se eles verem constantes bem-nomeadas ao invés de números. Finalmente, se você precisar mudar o valor de um número que é usado em vários lugares, você pode mudar tudo imediatamente deles se você usou uma constante representar aquele número mudando o valor da declaração constante simplesmente. São declaradas constantes no começo de um arquivo de script com o título de grupo, Const, como segue: Const Verdadeiro = 1, Falso = 0, Em = 1, Fora = 0 Por favor note que todas estas entradas excluem que o último tem uma vírgula ao término da linha. Escritores de script às vezes definirão as próprias constantes deles/delas para um script arquive, mas eles freqüentemente também usem esses que já são declarados em HJCONST.JSH. Nesse caso, eles têm que se lembrar de incluir este arquivo de cabeçalho. Nós revisaremos os significados das constantes neste arquivo na próxima seção, "script que Escreve Técnicas." 7.3.5 Funções embutidas e Operadores Há vários tipos de declarações no idioma de scripting de JAWS que pode ser usado para construir scripts e funções usuário-definidas. Estas são funções embutidas, operadores de aritmética, operadores lógicos, e operadores de bitwise. Também há um tipo especial de função embutida chamado uma função de gancho que será discutida separadamente. 7.3.5.1 Funções embutidas O idioma de JAWS provê mais de 350 funções pre-definidas para uso em scripts. Cada função executa umas séries específicas de atividades. Estes são os blocos de edifício ou instruções das quais nós criamos nossos scripts. Por exemplo, RouteJAWSToPC confere a posição das JAWS e cursores de PC, faz os cálculos necessários e movimentos o cursor de JAWS para o mesmo ponto como o cursor de PC. Toda aquela atividade são transparentes a você como tudo que você precisa saber é que move o cursor de JAWS para o cursor de PC. Não seria prático para discutir todo o predefined funciona aqui, assim nós estaremos contentes de para discutir algum do mais importante. Apêndice C lista muitos de as funções mais importantes e dá uma descrição breve de cada um. Estas descrições estão baseado em informação que pode ser achada em um arquivo chamado BUILTIN.JSD que pode ser achado dentro o \ subdiretório de settings\enu de seu diretório de JAWS principal, o assumindo estão usando o U. S. versão inglesa de JAWS. Estas descrições de BUILTIN.JSD é semelhante às descrições que você ouve quando vendo as funções listam do Gerente de script, mas muitos deles foram aumentados com informação adicional. Enquanto todas as funções de JAWS são importantes, o ones mostrado em Apêndice foram julgados C para ser muito importantes e merecedor de inclusão aqui. Obtendo uma compreensão completa destes o porá bem em seu modo para se tornar um escritor de script de mestre. Estas descrições e o ones para as funções restantes podem ser revisados qualquer hora a invocando o diálogo de função de suplemento no Gerente de script ou vendo o arquivo de BUILTIN.JSD. Nós também nos agrupamos muitas das funções embutidas pelo tipo de tarefa que eles executam. Estes agrupamentos podem ser vistos em Apêndice o D. Se você quiser fazer um particular tipo de tarefa mas não sabe o nome da função, você poderia tentar olhando no Apêndice categorias de D em vez de olhar pela lista alfabética inteira de Apêndice C ou BUILTIN.JSD. Antes de estudar Apêndice C, há um par de conceitos sobre algumas das funções que nós deveríamos revisar. A sintaxe destas funções embutidas é bem parecido para isso já discutido para funções usuário-definidas, mas levemos um momento para se lembrar. A sintaxe de uma função é como segue: FunctionName ([Parâmetros]) Algumas funções embutidas requerem parâmetros. Isto é indicado pelo palavra "parâmetro" em parênteses acima. Um parâmetro é dados que a função precisa ter dentro ordene para fazer seu trtablho. Se houver mais de um parâmetro, uma vírgula é usada para separar cada parâmetro dentro dos parênteses. O formato é exatamente igual a previamente foi discutido para funções usuário-definidas. Quando uma função que requer mais que um parâmetro é chamado, os dados devem ser providos na mesma ordem estipulado pela definição de função. Algumas das funções embutidas provêem "lucros." Revocação que um retorno é dados que a função devolve atrás ao script para mais adiante processo. Se uma função provê um retorno, aquela informação é determinada no arquivo de BUILTIN.JSD e na documentação de lista de função do Gerente de script. 7.3.5.2 o GetCurrentWindow e Funções de GetFocus Há duas funções embutidas que são assim muito importante a script que escreve que eles merecem atenção separada aqui. Estas duas funções são nomeadas GetCurrentWindow e GetFocus. O que no mundo estes fazem? Nós falamos bastante sobre manivelas de janela, mas nunca tem nós lhe contamos explicitamente como adquirir um ou o que fazer com isto se você adquire isto. Isto é onde você vai começar aprendizagem como fazer estas duas coisas. Isto lhe permitirá obter informação detalhada sobre uma janela (o qual, como dissemos já nós, também meios qualquer controle) isso está presente em sua aplicação. Mostrado tabixo é as definições para estas duas funções que são levadas de BUILTIN.JSD. * GetCurrentWindow - Determina a manivela de janela para a janela que contém o cursor ativo. Em contraste, o GetFocus funcionam usa um processo analítico para ache a janela que atualmente tem o foco embora o qual cursor é ativo. * GetFocus - Obtém a manivela de janela para a janela que tem "o foco." Sempre busca achar o cursor de PC ou artigo realçado que têm o foco. Sim não leve em conta. Em contraste, a função de GetCurrentWindow é menos sofisticada. Obtém a manivela simplesmente para a janela dentro o qual o cursor ativo fica situado. Assim o que significam estas definições? Em primeiro lugar, eles ambos provisão uma manivela de janela, os usando assim nos permite obter esta informação sobre uma janela em nossa aplicação. Por exemplo, as declarações Deixaram MyHandle = GetCurrentWindow () e Deixou MyHandle = GetFocus () fixaria a variável de manivela igual para o valor da manivela do janela em questão. Se você seguisse estes por uma declaração como SayInteger (MyHandle), JAWS falariam o número ou manivela de janela da janela de interesse. A diferença entre estas duas funções é aquele GetFocus obterá a manivela de janela de qualquer JAWS de janela acredita para ser o foco. Por exemplo, isto poderia ser o botão atualmente realçado ou edita campo em uma caixa de diálogo. GetCurrentWindow conferirá que cursor é ativo e então adquire a manivela do janela conter aquele cursor. Assim, se você ativa o cursor de JAWS, por exemplo, e move isto longe do foco para outro controle, GetCurrentWindow adquirirá a manivela de janela de aquele controle novo enquanto GetFocus ainda adquirirá a manivela da janela que tem foco. Certo, tão agora você sabe obter uma manivela de janela. O que vai você ver com isto? Não é por si só muito uso desde que é há pouco um número. Porém, o GetFocus e podem ser usadas funções de GetCurrentWindow como parâmetros por outras funções que provêem informação muito mais útil sobre a janela de interesse. Usando estes outras funções junto com GetFocus e GetCurrentWindow para contar as outras funções que janela para obter informação aproximadamente, pode prover informação muito útil. Alguns exemplos são mostrados tabixo. * GetControlID (GetCurrentWindow ()) - o Will provê o Controle ID da janela que contém o cursor ativo. * GetFirstChild (GetFocus ()) - Obtém a manivela da primeira janela de criança da janela que tem foco. Esta manivela de criança poderia ser usada para obter informação então sobre a janela de criança. * GetParent (GetCurrentWindow ()) - Obtém a manivela do pai que gerou a janela de criança atual. * SayControl (GetFocus ()) - o Will fala os conteúdos e lembrete do controle que atualmente tem foco. * SayWindowTypeAndText (GetCurrentWindow ()) - o Will fala uma variedade de informação sobre a janela que contém o cursor ativo como o título de janela, se qualquer, os conteúdos de janela, o tipo de janela, e outra informação. Assim, você tem uma compreensão agora de como usar algumas funções de JAWS para prover manivelas que podem ser usadas através de outras funções de JAWS para obter informação que vai seja precisado por seus scripts, falar aquela informação ou tomar decisões aproximadamente como continuar o processo de script. Novamente, você achará uma lista do funções embutidas mais importantes em Apêndice C e uma lista completa destas funções em BUILTIN.JSD. 7.3.5.3 a Pausa e Funções de Demora Há duas funções que causarão o processo de um script ser suspendido temporariamente, Pausa () e Demora (). Esta suspensão de script processar é freqüentemente necessário impedir para um script de se pôr muito distante à frente da aplicação isto está trtablhando com. Por exemplo, se você usa uma função que move o cursor de JAWS a uma parte diferente da tela ou quais gotas tabixo um cardápio, você pode ter que suspender script que processa para permitir a ação para completar antes do script continua. A função de Pausa simplesmente script de paradas que processa e dá para outras aplicações uma oportunidade para completar o processo deles/delas. Então o script retoma. A Demora paradas de função para um comprimento especificado de tempo que é indicado por uma inteireza entre os parênteses. O maior a inteireza, o mais longo a suspensão. Porém, se o tempo de suspensão escolhido não for adequado para outras aplicações completarem o processo deles/delas, o script retomará de qualquer maneira. Às vezes um processo de tentativa e erro é necessário determinar a própria quantia de demora. Em geral, a função de Demora é mais útil quando você quer forçar o script a parar, independente de se a aplicação é actabdo ou não. Às vezes uma função de Pausa não parece fazer o script suspender para simplesmente um longo bastante período, e uma Demora é pedida alcançar os desejaram afetam. Em geral, vale a pena para tentar a Pausa primeiro. Se mais tempo de suspensão é requerido, uma Demora pode ser usada então. 7.3.5.4 uma Palavra Sobre SDM Windows Nenhum mais cedo você aprende algo sobre Windows quando você tiver que aprender sobre uma exceção. Nós falamos mais cedo (Veja Capítulo 6.) sobre o interrelationship de pai e janelas de criança e descreveu como todo controle (i.e., abotoe, edite campo, checkbox, etc.) realmente é uma janela em seu próprio direito e é a janela de criança do pai que gerou isto, normalmente uma caixa de diálogo. Bem, sai que há uma vez quando isto não for verdade. Windows tem um tipo de janela da qual usa em alguns seu aplicações chamadas uma janela de SDM que estava para gerente de diálogo de padrão. Em uma janela de SDM, não estão os controles janelas de criança do pai dialogam e, na realidade, não é janelas separadas nada. Assim, eles não têm as próprias manivelas deles/delas. Isto faz isto impossível escrever scripts para adquirir informações sobre eles usando o padrão técnicas usaram para outros controles. Por exemplo, em um diálogo convencional, se a pessoa quisesse adquirir informações atualmente sobre o controle focalizou em, a pessoa poderia usar uma declaração de função aninhada como GetWindowSubtypeCode (GetFocus ()). GetFocus () alimentará a manivela de janela do controle atualmente focalizado ao GetWindowSubtypeCode () função, e esta função devolverá o SubTypeCode do controle atualmente focalizado então. Em deste modo você poderia aprender se o controle atual era um botão, radiobutton, slider, checkbox, ou outro tipo de controle. Isto simplesmente não trtablhará para uma janela de SDM desde que seus controles não têm manivelas sem igual. Então, JAWS incorporam algumas funções especiais que você verá em Apêndice C que é usado para adquirir informações sobre controles em uma janela de SDM. Assim como você sabe se você está lidando com uma janela de SDM? Bem, aquela parte, pelo menos, é fácil. Você sempre pode usar as JAWS combinação fundamental quente CTRL+INSERT+F1 para adquira um pouco de informações sobre a janela na que você é focalizado, e um dos artigos que você adquirirá é a classe de janela. Janelas de SDM sempre têm as cartas SDM no nome deles/delas. Por exemplo, se você expõe o Diálogo Aberto em Microsoft Word, e usa CTRL+INSERT+F1 nos controles naquele diálogo, você achará que a maioria deles tem a janela bosa_sdm_Microsoft de nome de classe Formulam 8.0. Você também notará que todos os controles com aquele nome também têm a mesma manivela de janela. Esta é a manivela do Diálogo aberto isto, e, assim, não será útil, todo por si só, provendo informação sobre os controles individuais. Assim como é a pessoa para adquirir estas informações? As funções especiais em JAWS que são projetadas para fazer isto confiam no fato que os controles em um diálogo de SDM têm um controle sem igual até mesmo ID se eles não tiverem uma manivela de janela sem igual. Usando este controle sem igual ID em combinação com a manivela de janela do diálogo, a pessoa pode aprender informação sobre o controle do diálogo de SDM. Por exemplo, dois do SDM especial funcionam mostrado em Apêndice C são SDMGetCurrentControl e SDMGetNextControl. O primeiro destes devolverá para o controle ID do controle no qual o cursor ativo é focalizado, e o segundo adquirirá o controle ID do próximo controle no diálogo de SDM. Assim, se a pessoa quisesse obter informação mais detalhada sobre o atual ou logo controla no diálogo de SDM, ele poderia usar o Controle informação de ID de qualquer um destas duas funções com um das outras declarações de SDM especiais informar a informação avançada sobre aquele controle. Por exemplo, tal uma declaração é mostrada tabixo. SDMSayControl (GetFocus (), SDMGetCurrentControl ()) A função SDMSayControl falará um controle em um diálogo de SDM, mas nós temos que contar isto qual. São exigidos dois parâmetros fazer isto. O primeiro, GetFocus, conta para a função adquirir a manivela de janela do diálogo de SDM atualmente focalizado. O segundo parâmetro, SDMGetCurrentControl, conta a função nós queremos o controle ID do controle de SDM no que nós somos focalizados agora mesmo. Assim, esta função falará o nome e outra informação sobre o SDM controle nós somos focalizados agora mesmo em em um diálogo de SDM. Em outro palavra, nós podemos especificar um controle sem igual contando para JAWS ambos a manivela do diálogo de SDM nós estamos nos referindo e o controle ID do controle nós estamos interessados dentro. Estes dois pedaços de informação, levados junto, são suficientes para contar JAWS que SDM controlam nós queremos saber aproximadamente. O outro SDM funções listaram em Apêndice C provêem outras opções para identificação de controle em diálogos de SDM. 7.3.5.5 Operadores de aritmética São usados os operadores de aritmética para executar operações de aritmética clássicas dentro de scripts. Os quatro operadores são um sinal de menos ou colisão (-) para subtração, um mais sinal (+) para adição, um golpe (/) para divisão, e um asterisco (*) para multiplicação. Estes operadores normalmente são usados em variáveis de inteireza e inteirezas. Declarações como os exemplos mostrados tabixo ilustre como estes operadores podem ser usados Deixe IntVar = IntVar + 1 (Isto incrementará a variável de inteireza chamada IntVar antes da 1.) Deixe IntVar = FirstVar * SecondVar (Isto fixa IntVar igualam a FirstVar cronometra SecondVar.) Say (MyConstant + YourConstant, OT_NO_DISABLE) (Isto falará os conteúdos das duas constantes, MyConstant e YourConstant, como se elas fossem uma mensagem. OT_NO_DISABLE é uma constante de tipo de produção que conta para JAWS quando falar a mensagem com respeito às colocações de verbosidade de costume de um usuário. Este tópico será coberto em mais detalhe depois. (Veja Capítulo 8.9.) 7.3.5.6 Operadores lógicos São usados os operadores lógicos para fazer comparações de variáveis com outras variáveis ou constantes. Nós freqüentemente precisamos saber se um artigo tem o mesmo valor, um menos avalie, ou um maior valor que outro artigo. Às vezes devem ser comparados vários artigos ou grupos de artigos com outros artigos. Os operadores lógicos são normalmente usados dentro Se-então e Enquanto voltas confiram se condições requereram para decisões lógicas é verdade ou falso. Uma lista das JAWS para operadores lógicos são mostrados tabixo. * == - Dois igualam sinais junto desta maneira pergunte se a primeira condição é "igual a" a segunda condição. Quer dizer, é à esquerda a expressão do dois igualam sinais à direita equivalente para a expressão lado. Por exemplo, a expressão (UM == B) pergunta se UM iguala o B. * != - Um ponto de exclamação e um iguala sinal junto desta maneira pergunte se a primeira condição não é igual a" a segunda condição. Quer dizer, é a expressão à esquerda do ponto de exclamação e iguala sinal à direita diferente da expressão lado. Por exemplo, a expressão (UM != b) é verdade se UM não faz B. igual * <- Um - Um> sinal pergunta se a primeira condição é "maior que" a segunda condição. Quer dizer, é à esquerda a expressão do> sinal maior que a expressão à direita lado. Assim, a expressão (UM> B) é verdade se UM é maior que o B. * >= - Um> sinal seguido por um iguala sinal pergunta se a primeira condição é "maior que ou iguala a" a segunda condição. Quer dizer, é a expressão para o partido do >= sinais maior que ou iguala à direita à expressão lado. Assim, a expressão (UM >= B) é verdade se UM é maior que ou iguala a B. * && - Este operador é colocado entre duas comparações lógicas fez para usando os operadores lógicos como o ones descrito acima. Pergunta se a primeira condição é verdade "e adicionalmente" é a segunda condição verdadeiro. A expressão total é avaliada como só retifique se as comparações em ambos os lados do && o operador é verdadeiro. Assim, na expressão (UM == B) && (C != D), um valor de verdadeiro só é devolvido se UM iguale B e C não iguala o D. * || - Este operador é colocado entre duas comparações lógicas fez para usando os operadores lógicos como o ones descrito acima. Pergunta se ou a primeira condição é verdade ou se a segunda condição é verdade. A expressão total é avaliada como verdadeiro se qualquer um das comparações em qualquer lateral do || o operador é verdade. Assim, no exemplo (UM == B) || (C == D), um valor de verdadeiro é devolvido se ou UM iguala B ou C iguala o D. claro que, um valor de verdadeiro também seria devolvido se ambas as expressões eram verdades. Este é um lugar bom para o apresentar a uma convenção alguns programadores empregam ao usar os operadores lógicos. Às vezes você verá uma declaração como o um mostrado debaixo de. ! Expressão == Verdadeiro onde Expressão pode ser uma variável ou função. Por favor note que há um ponto de exclamação no começo da palavra, Expressão. Este ponto de exclamação meios, em essência que nós queremos usar o oposto de Expressão e, então, Assim, a anterior declaração seria equivalente a dizer Expressão == Falso. Assim, um ponto de exclamação tem o efeito de inverter a lógica da declaração. 7.3.5.7 operadores de Bitwise Operadores de Bitwise são uma ferramenta que nos permite comparar dois pedaços de dados de um modo bastante incomum. O que eles nos permitem fazer é comparar dois pedaços de informação mordido por pedaço em vez de como um todo valor. Todos nós sabemos que é armazenada informação de computador em forma digital como umas séries de ones e zeros. Isto é, claro que, verdadeiro para variáveis e constantes. Por exemplo, as JAWS constante para realçou ou selecionou texto é chamado Attrib_highlight. Se você olha no arquivo de HJCONST.JSH, você, ache que esta constante tem um valor de 64. 64, o que faz aquele mau? Bem, 64 são obviamente um básico 10 ou número decimal, não um número binário. Nós podemos contar isto porque números binários só usam ones e zeros, assim 64 não podem ser um número binário. Quando nós traduzimos 64 em binário que nós adquirimos o número 01000000. (Uma discussão de aritmética binária está além da extensão deste manual, assim se você não entende como esta conversão foi feita, você há pouco terá que aceitar isto como a verdade.) HJCONST.JSH também nos fala que o atributo corajoso, Attrib_Bold é 2 ou 00000010 dentro binário, os itálicos atribuem, Attrib_Italic, é 4 ou 00000100 dentro binário, e o sublinhe atribua, Attrib_Underline, é 8 ou 00001000 dentro binário. Se lembre como nós dissemos cedo em neste manual que constantes eram usadas porque eles são mais fáceis se lembrar que números? Bem, aqui é um exemplo excelente daquela situação. Nomes como ATTRIB_HIGHLIGHT são muito mais fáceis se lembrar que números binários longos. Assim o que podemos fazer nós com estes números, e o que têm eles para ver com operadores de bitwise? Saymos nós queremos saber se um certo pedaço de texto é realçado. Nós usaremos um dos operadores de bitwise pelos quais são designados um único & sinal para entender isto. Este operador de bitwise nos permite levar uma variável e comparar isto, mordeu através de pedaço, com outro variável ou uma constante como ATTRIB_HIGHLIGHT. Há uma diferença essencial entre uma comparação standard e uma comparação de bitwise de dois pedaços de informação que usa o & o operador. Na comparação standard, um valor de verdadeiro ou a pessoa só será devolvido se ambos os pedaços de informação forem idênticos sob todos os aspectos. Em uma comparação de bitwise que usa o & o operador, um valor de verdadeiro ou a pessoa será devolvido para todo par de pedaço posições nos dois pedaços de informação que são idênticos. Saymos nós queremos fazer uma comparação de dois números binários, 0101 e 0001. Em uma comparação standard, não estão estes dois números o mesmo. Em uma comparação de bitwise, está o dígito de rightmost o mesmo para ambos os números, assim seria devolvido um valor de 0001 pela comparação de bitwise. Este retorno significa que a comparação era verdade, mas só no primeiro ou posição de rightmost. Se nós fôssemos comparar os números 0111 e 0110, nós veríamos que o segundo e terceiras posições do direito ambos o ones estão em ambos os números. Então, a comparação de bitwise devolveria um valor de 0110. Semelhantemente, 0011 e 0110 devolveriam um valor de 0010. Só o segundo dígito do direito é uns um entre ambos números. Nós podemos fazer comparações semelhantes quando um dos números é uma variável goste, por exemplo, o variável que informa os atributos que são associado com um pedaço de texto na NewTextEvent script função. (Revocação que o NewTextEvent funcionam corre automaticamente toda vez texto novo é escrito à tela.) A linha seguinte é levada daquela função. Se (nAttributes & ATTRIB_HIGHLIGHT) Então Esta é à primeira vista uma declaração bem estranha. O nAttributes variável é o parâmetro que traz informação de atributo no NewTextEvent funcione quando texto novo é escrito à tela. Assim, se este texto é realçado, nAttributes terão o valor 01000000. Se o texto for corajoso, terá o valor 00000010. Se seu grifou e tipo negrito, nAttributes terão o valor 00000110. Se é realçado, tipo negrito, e grifou, terá o valor 01000110. Você pode pensar de cada posição em nAttributes como um interruptor de pino de madeira no que vira um dos possíveis atributos ou fora. Bem, nós já sabemos que ATTRIB_HIGHLIGHT tem o valor 01000000, assim a anterior linha de código diz nAttributes de objeto pegado e compara isto usando o bitwise & o operador para o Attrib_highlight constante. Se há uma partida, relatório, atrás um valor de um para cada mordeu posição que emparelha. Por exemplo, se nós comparamos texto que é realçado, tipo negrito, e sublinhamos (nAttributes = 01000110) em uma moda de bitwise com ATTRIB_HIGHLIGHT (01000000), nós devolveremos um valor de 01000000. Isto significa que a declaração Se-de então está devolvendo um valor de verdadeiro ou 1 para a sétima posição do direito, o que indica se ou não texto é realçado, e o NewTextEvent entendeu que os recentemente-escritos realmente, texto é realçado. Então, o texto será controlado como texto realçado. O fato que este texto também é corajoso e grifou é verdade, mas irrelevante para este teste. A anterior declaração Se-de então só está conferindo para ver se o pedaço de destaque é fixado para retificar ou 1, e isso é a informação que é mandada de volta ao NewTextEvent script. Também há outro operador de bitwise que executa um ou operação em vez de um e operação. Este operador é designado por um único | diferenciar isto do padrão ou operador que são designados antes de dois destes símbolos, ||. Quando você usa o bitwise ou operador, um valor de verdadeiro é devolvido se qualquer um ou ambos dos pedaços na comparação é igual a 1. Assim, uma comparação dos dois binário numera 0101 e 0010 devolveriam um valor de 0111. Semelhantemente, comparação de os números que 0100 e 0001 devolveriam para um valor de 0101. Assim, o bitwise ou o operador está satisfeito se qualquer um dos números tiver um 1 em uma posição particular. 7.3.5.8 gancho Funciona Às vezes é JAWS postas necessárias em um estado alterado onde alguns ou todas as chaves no teclado fazem coisas diferentes das funções normais deles/delas. Nós somos já familiar com este conceito até certo ponto. Você enlata pino de madeira tais colocações como eco de tela, eco de teclado, e a casa reme estado, o último em sendo uma característica que será descrito depois. (Veja Capítulo 8.1.) Estes tipos de pinos de madeira estão disponíveis porque JAWS têm funções embutidas que podem ser chamadas através de scripts a pino de madeira estes estados de modos de predefined. Porém, JAWS também contêm duas funções que lhe permitem alterar o estado do sistema para vestir suas próprias necessidades. Estes são o AddHook () e RemoveHook () funções. Em um nutshell, o que acontece é isto. Se você instala um gancho chamando o AddHook () função de um script, nós dizemos isso um gancho está em lugar. Quando você usa que o AddHook funcionam, você dá isto o nome de um gancho. Este gancho é uma função usuário-definida especial que você tem que criar que normalmente será corrido em vez do código corrido por scripts de JAWS. Quando um gancho estiver em lugar, é chamado certo antes de todo script seja corrido, e passou os nomes do script atual e molda como seus dois parâmetros. Considerando que a função de gancho é chamada de fato uma vez através de JAWS que está em lugar e não por um script, estes parâmetros são provido por JAWS código interno e não por uma chamada de função. Se o gancho devolver VERDADEIRO, o script é permitido executar. Se o gancho devolver FALSO, o script vai não seja permitido correr. Assim, se um gancho está em lugar e nós projetamos o gancho para devolver um valor de falso enquanto está em lugar, o script nomeou à chave nós apertamos não correrá, e nós podemos ter a função de gancho fazer qualquer outra coisa ao invés. Você pôde, se você quis, projete um gancho que faria toda chave que é nomeado a um script de JAWS recite a "Mary teve um pequeno cordeiro" em vez de executar sua função de JAWS normal. Agora isto não seria de muito uso, mas estaria bonito engraçado se você tivesse tal um gancho que você poderia virar em toda vez você deixado um amigo usar seu computador! Olhemos para um exemplo de uma função de gancho mais útil, o KeyboardHelpHook. Como você provavelmente saiba até agora, você pode virar em ajuda de teclado apertando INSERT+1. Quando você fizer isto, todas as chaves no teclado começam recitando as funções deles/delas se eles são prendidos a um script de JAWS em vez de executar essas funções de fato. Quando você apertar INSERT+1 novamente, o teclado volta a executar as funções em vez de recitar as descrições. Você já desejou saber como isto é terminado? Bem, adivinhe isso que? É terminado com funções de gancho. Olhemos para o script de KeyboardHelp e o KeyboardHelpHook funcionam para ver como estas tarefas são realizadas. script KeyboardHelp () SayMessage (ot_status, msg401_L, msg401_S); Ajuda de Teclado" em"; falado tempo que Insert+1 é apertado primeiro. deixe nKeyboardHelpSavedTypingEcho = GetJCFOption(OPT_TYPING_ECHO); economiza sua colocação de eco de teclado atual. SetJcfOption(OPT_TYPING_ECHO,1); caráter de eco; Teclado ajuda precisa de datilografia ecoe para estar no estado de caráter. AddHook (HK_SCRIPT, "KeyboardHelpHook"); Soma o gancho nomeado KeyboardHelpHook. TrapKeys(TRUE); Quando Verdadeiro, esta função faz JAWS ignorar qualquer chave não presa ; scripts EndScript O que está acontecendo aqui é que uma mensagem que lhe conta ajuda de teclado é falada é em, seu eco de datilografia atual é economizado, enquanto digitando eco é fixado a caráter assim a ajuda pode funcionar corretamente, e o KeyboardHelpHook é instalado. Adicionalmente, TrapKeys é fixado para retificar assim chaves não saltaram a scripts de JAWS ou armações será ignorado. (Você não pode dar uma mensagem de ajuda para uma chave que não tem nenhum script de JAWS ou armação associou com isto.) Também agrade nota que a função de AddHook requer dois parâmetros. O primeiro, HK_SCRIPT, é uma constante definida em HJCONST.JSH que você tem que usar para todo AddHook. O segundo é o nome do gancho que você está instalando. Tão agora, qualquer chave isso é amarrado a uma função de JAWS não executará sua função mas chamará o KeyboardHelpHook funcionam mostrado tabixo. Função nula KeyboardHelpHook (fio ScriptName, fio FrameName) se (ScriptName == "KeyboardHelp") então; Se nós apertamos INSERT+1 enquanto o gancho é instalado, ; significa nós queremos virar Ajuda de Teclado fora. SayMessage (ot_status, msg402_L, msg402_S); Ajuda de Teclado" fora" RemoveHook (HK_SCRIPT, "KeyboardHelpHook"); Isto remove o gancho. TrapKeys(FALSE); Agora todas as chaves serão reconhecidas novamente. SetJcfOption(OPT_TYPING_ECHO,nKeyboardHelpSavedTypingEcho); Restabeleça nosso ; eco de teclado original. retorno FALSO; embora nós estejamos virando o gancho fora, nós devolveríamos melhor falso ; mais tempo, ou o script de INSERT+1 correrá novamente e reinstalará o gancho. EndIf ; O resto da função, como mostrado tabixo, decide o que falar dependendo em se a chave é amarrada ; uma chave ou um script e se a chave foi apertada algumas vezes. Estude isto ; código até que você entende isto completamente como um exercício. Se você tem dificuldade ; entendendo tudo do Se-então-outro declarações, prossiga lendo a próxima seção ; Controlando fluxo, então volte e estude este script novamente. se IsSameScript () então se ((FrameName != "") && (GetFrameDescription (FrameName) != "")) então SayMessage (ot_help, msg420_L, msgSilent); "Esta armação " Say (GetFrameDescription (FrameName), OT_HELP) EndIf se (FrameName == msgNull_L) então Say (GetScriptDescription(ScriptName), OT_HELP) EndIf outro Say (GetCurrentScriptKeyName (), OT_HELP); diz nome fundamental, "SETA de INSERT+UP", se (FrameName != msgNull_L) então SayMessage (ot_help, msg421_L + FrameName); "diz o conteúdo da armação Say (GetFrameSynopsis (FrameName), OT_HELP) outro Say (ScriptName, OT_HELP); dirá o nome do script, "SayLine", Say (GetScriptSynopsis(ScriptName), OT_HELP) EndIf EndIf retorno FALSO; Impede para o script de correr desde que nós só queremos a mensagem de ajuda. EndFunction 7.3.5.9 introdução para script que Escreve Com Objetos de Microsoft Se você acontecer ter lido alguns dos scripts em Microsoft PowerPoint ou Superar, você pode ter se encontrado com algum código bem estranho do que não se assemelhar a o script que constrói blocos sobre o que nós falamos tão longe. Este código inclui palavras como Seleção, Gama, Texto, e Colapso separaram de um ao outro através de períodos. A menos que você já esteja familiarizado com programar objeto-orientar usando idiomas como Visual Básico e C Plus+, este tipo de código será completamente incompreensível. Assim o que é este material, e o que está fazendo no meio de scripts de JAWS? Para explicar isto, nós precisamos introduzir três conceitos novos, objetos, métodos, e propriedades. Um objeto é um auto-suficiente constrói que possui dentro de si mesmo várias características ou atributos que estão definido como as propriedades do objeto. O objeto também contém várias técnicas ou funções que podem fazer algo que acontecer ao objeto ou que permitem o objeto para executar alguma ação, e estes são chamados os métodos do objeto. As propriedades podem ser usadas para devolver informação atrás para o mundo externo sobre o objeto, e eles também podem ser altere as qualidades ou atributos do objeto. Estas informações podem ser passadas a outro método ou propriedade para mais adiante processo ou atrás para as JAWS idioma de script ser usado para processo de script. Assim, o objeto contém dentro de si mesmo tudo dos atributos ou propriedades como também todas as técnicas ou métodos que podem ser usados para fazer algo que acontecer ao objeto ou informação de retorno disto. Certas propriedades são ler-escreve quais meios podem ser olhados eles a como também mudou de certos modos de predefined, certas propriedades são eruditas só quais meios você pode determinar o que a propriedade é mas não mudança isto, e alguns propriedades são só escreva que meios você pode os mudar mas não olhar a eles. Os métodos de um objeto são específicos àquele objeto e são usado dentro do objeto. Eles não são usados em outros objetos. Isso é o que nós queremos dizer quando nós dissermos que um objeto é auto-suficiente. Possui todos os dispositivos precisaram mudar isto em tudo do modos que é permitido para ser mudado e para devolver informação sobre isto para o mundo externo. Assim por que nós nos preocupamos com estes objetos? Há certas coisas que os usuários gostam de poder fazer como leitura e navegar por oração e parágrafo em vez de só através de linha. Infelizmente, é bastante difícil de fazer isto em a maioria dos processadores de textos desde que eles não são fixos até navegue nesta moda. Além disso, nós devemos se lembre que um leitor de tela, por definição, lê o que é visível na tela, e se parte do parágrafo ou condena nós estamos tentando para ler está fora a tela, normalmente não seria possível acessar aquele material sem enrolar a tela. O usuário poderia não desejar fazer isto desde, por exemplo, ele ou ela poderia ser no processo de editar texto e não quer mover o cursor. Objetos nos proporcionam um modo para realizar estas tarefas como o objeto que representa um determinado documento contém tudo dos métodos e propriedades precisou informar a informação precisada atrás a JAWS. Microsoft escolheu expor "objetos de automatização" para estes para o mundo externo em certo de suas aplicações como o Escritório 97 e 2000 apartamentos, e JAWS, examinando e manipulando estes objetos, podem realizar os tipos de tarefas desejáveis descreveram acima. Em essência, JAWS se tornam uma leitora de objeto temporariamente além de ser um leitor de tela. O termo "automatização objeto" é usado aqui significar um objeto que está exposto de forma que outras entidades como JAWS pode os acessar. Aplicações que não usam o tipo de modelo de objeto descrito aqui para a codificação deles/delas ou não expõe estes objetos para o mundo externo não pode ser acessado nesta moda. Assim, o uso de objetos por aumentar tela lendo é limitado a certas aplicações de Microsoft ou qualquer aplicação que escolhem expor objetos de automatização para estes. Infelizmente, está além da extensão deste manual prover tudo do conhecimento e ensinar tudo das técnicas necessário usar estes objetos em scripting. Na realidade, para esses que não estão familiarizado com programar objeto-orientar, aquela tarefa requereria um manual provavelmente mais longo que este manual de script inteiro. O que nós pretendemos fazer aqui é introduzir o assunto assim os objetos, métodos, e propriedades que se aparecem em scripts de JAWS não serão completamente misteriosos e prover algumas referências de forma que esses para que desejam podem continuar no próprio deles/delas aprender este assunto. Este capítulo só é planejado como uma avaliação. Esperançosamente, está começando a ficar aparente que manipulando estes tipos de objetos é fundamental às atividades que acontecem em aplicações de Microsoft Office, e, que manipulando estes objetos, JAWS podem acessar informação desejável do modelo de objeto. Na realidade, se você leva o tempo para aprender a registrar um macro em Palavra (que é simplesmente terminado do submenu de Macro do cardápio de Ferramentas), você verá algo muito interessante. (Você pode acessar informação sobre gravação de macro do Windows ajuda sistema apertando F1 enquanto em Palavra. Vá para a tab de Índice e digite o palavra macro. Você será apresentado com vários tópicos, enquanto incluindo criação de macro.) Gravação de prova um macro enquanto fazendo alguma operação típica como abrir um documento, economizando um documento, ou selecionar e apagar algum texto então. Então, depois que o macro registrando foi virado fora, volte para o submenu de Macros e imprensa Entra na primeira opção que é Macros, ALT+F8. Você abrirá um lista de seus macros existentes e seja dado a opção para os editar. Selecione o edite opção, e você será colocado no editor Básico Visual e será mostrado uma cópia de seu macro. Você notará que os olhares de código há pouco igual o tipo de objeto que programa que nós temos discutido. Isto significa que todas as coisas você faz enquanto trtablhando nesta aplicação estão sendo terminados acessando objetos e trtablhando com os métodos deles/delas e propriedades. Assim, estudando macros você registraram é um modo de aprendizagem como são manipulados objetos nas aplicações de Escritório. Há uma outra técnica útil que você pode usar enquanto você estiver no editor Básico Visual. Se você aperta F1 enquanto seu ponto de inserção estiver em qualquer método ou propriedade do código de programação, uma tela de ajuda estourará para cima qual explica o termo e como é usado. Se você não adquirir esta ajuda, pode significar aquela ajuda Básica Visual não é instalada em seu sistema. Você pode instalar isto do Microsoft Office instalação disco inserindo o disco em seu passeio de CD ROM e expondo o diálogo de Corrida então desde o começo cardápio e digitando X:/setup onde X é a carta de seu passeio de CD-ROM. Clique o add/remove abotoam quando o diálogo de instalação se aparecer. Então, quando a lista de opções se aparecer, escolha um das aplicações de escritório como Palavra e tab em cima de para o botão de Opções de Mudança. Clique isto, e você será colocado em outra lista de opções. Selecione a escolha de Ajuda e tab às Opções de Mudança abotoe novamente. Clique isto, e você estará em uma terceira lista. Selecione a opção de Referência Básica Visual, e então tab em cima de para o botão de OK e clica isto. Continue clicando os botões de OK até que você volta ao topo lista de seleção nivelada. Repita o procedimento inteiro até que você selecionou a seleção de Referência Básica Visual para cada aplicação em qual você está interessado. Então clique o OK ao nível de topo terminar a instalação. Você pode voltar qualquer hora ao editor Básico Visual a selecionando isto de o submenu de Macros do cardápio de Ferramentas ou apertando ALT+F11. Agora, demos uma olhada em uma VERSÃO de um script de JAWS que originalmente se apareceu em versão 3.2 e quais objetos usados para executar uma tarefa de scripting. Em versão 3.2, CTRL+NUM BLOCO VANTAGEM urgente enquanto em Microsoft Word 8 leitura o parágrafo atual. O script que foi executado é mostrado tabixo. script SayParagraph () SaveCursor () PCCursor () se (GetLine () == "") então Say (msge18, OT_MESSAGE); "Espaço em branco" outro Say (GetParagraphContent (), OT_TEXT) EndIf EndScript Isto se parece um script perfeitamente ordinário que chama uma função usuário-definida nomeado GetParagraphContent (). Demos uma olhada naquela função. Função de fio GetParagraphContent () var conteste o deixe o = oWord.Selection.Paragraphs(1). Gama; retorno (o.Text); EndFunction Nós podemos ver da primeira linha desta função que devolve um fio e não precisa de qualquer parâmetro. Os segundos começos de linha em nossa declaração de variáveis local, e na terceira linha, declaramos nós uma variável de objeto chamada o. Então a diversão começa. As quartas leituras de linha deixe o = oWord.Selection.Paragraphs(1). Gama; Antes de nós analisarmos esta linha, nós queremos mencionar os ponto-e-vírgulas que se aparecem aos fins de algumas destas linhas. Eles querem dizer a mesma coisa que eles sempre quiseram dizer, isso, tudo é depois um comentário. Alguns programadores somam estes ponto-e-vírgulas para indicar o fim do código atual da linha, até mesmo se eles não põem de fato em um comentário depois. Agora, analisemos esta linha de partiu para corrigir. À esquerda do iguala sinal, nós estamos dizendo que nós vamos nomear um pouco de valor ao o variável. A primeira coisa à direita do iguala sinal é algo chamado oWord. oWord é uma variável global que foi declarada no WINWORD.JSH cabeçalho arquivo, e é uma variável de objeto que segura o objeto de aplicação, a aplicação que é a Microsoft Word. oWord está no princípio definido na função de AutoStartEvent do arquivo de script. Recorde que esta função de evento corre Palavra automaticamente toda vez está carregado ou adquire o foco do sistema. O código na função de AutoStartEvent que foi escrito pelos programadores a jogos de Henter-Joyce um ponteiro Formular assim JAWS saberão onde ir procurar objetos de aplicação. Se não havia nada outro nesta linha exclua Deixado o = oWord, nós estaríamos fixando a variável do igual para o objeto global oWord variável, o objeto de aplicação inteiro. Isso não vai nos faça muito bem se o que nós quisemos fazer for erudito o parágrafo atual. Assim nós vamos ter que achar algum modo para extrair a informação textual daquele parágrafo de o objeto de aplicação inteiro. O próximo artigo é um período. Isto é usado para separar variáveis, métodos e propriedades. Então vem Seleção. Esta é a propriedade de Seleção e, em essência, isto lucros o objeto de Seleção que contém informação sobre o que é selecionado atualmente no documento. Se você selecionou algum texto no documento, aquele texto, será devolvido no objeto de Seleção. Se nada é selecionado atualmente, o objeto de Seleção se desmoronará a um único ponto ao ponto de inserção. Isto que tudo fazem para senso se nós pensamos em o que nós sabemos sobre selecionar texto. Nós sabemos que nós podemos ter só um bloco de texto selecionado de cada vez em um determinado documento, assim faz sentido que pode haver só um objeto de seleção de cada vez. Se nada é selecionado, então a seleção e a seleção contesta tenha que se desmoronar um único ponto, o ponto de inserção. Se uma propriedade devolver um objeto, aquele objeto terá o mesmo nome como a propriedade que devolveu isto. Por favor se lembre isto de porque a alternativa é total confusão. Uma propriedade devolve um objeto do mesmo nome, mas a propriedade começando não é uma propriedade do objeto recentemente-devolvido. Isto é verdade embora eles tenha o mesmo nome. A propriedade pertence ao objeto prévio, o um só operou em, não o objeto recentemente-criado. O objeto novo tem seu próprio jogo de propriedades e métodos, e eles não incluem o que criou isto. Assim recapitulemos o que nós temos tão longe. Nós temos o objeto de aplicação de palavra inteiro representado pelo oWord variável, e a propriedade de Seleção devolveu um objeto de Seleção que contém informação sobre o que é selecionado atualmente no documento. Logo vem a propriedade de Parágrafo. Usando esta propriedade devolve um objeto de parágrafo. Este objeto contém informação sobre o parágrafo indicado pelo índice numere em parênteses que são contidos dentro do objeto de seleção que foi devolvido à esquerda pela propriedade de Seleção. Depois que a propriedade de Parágrafo devolver sua informação, nós teremos devolvido um objeto com o parágrafo que contém o ponto de inserção (não assumindo nenhum texto tem sido selecionado) ou o primeiro parágrafo que faz parte de um bloco de texto selecionado. (No primeiro caso, há só um parágrafo, e no segundo caso, o (1) índice dos lucros de objeto de Parágrafo o primeiro parágrafo que faz parte da seleção.) Logo vem a propriedade de Gama. A propriedade de Gama devolve um objeto de Gama que representa a porção de um documento que é contido no objeto especificado. Em este caso, o objeto especificado é o objeto de Parágrafo que foi devolvido à esquerda pela propriedade de Parágrafo. A Gama é semelhante a um par de marcadores de páginas. Um representa o começo da gama e o segundo o fim da gama. O objeto de Gama que é devolvido pela propriedade de Gama que usa a informação do Objeto de parágrafo terá o começo e terminando pontos do jogo de parágrafo especificado como a gama. Este objeto final é agora fixo até nos permita recobrar a informação que nós precisamos falar o parágrafo atual. Nós entramos agora à próxima linha na função de GetParagraphContent, o um que lucros a informação para o script de chamada. Aquela linha lê como segue. retorno (o.Text); Aqui, o é o objeto de Gama que foi devolvido ao término da linha prévia, e Texto é a propriedade de Texto que devolve o texto atual no qual nós estamos interessados do objeto de Gama. (Nota isso neste caso, a propriedade de Texto está devolvendo texto atual e não um objeto.) Como está sendo usado aqui, os lucros de propriedade de Texto, a planície, texto não formatado da gama. Afinal nós adquirimos à informação que nós buscamos. O texto que será devolvido pela propriedade de Gama nisto caso será o texto do parágrafo atual. Que, em troca, será voltado a nosso script de chamada pela declaração de Retorno desta linha de código. Desde o Texto propriedade devolve um fio, nós estaremos devolvendo um fio a nosso script de chamada, da mesma maneira que nós especificamos na primeira linha de nossa função. O script de chamada pode então continue seu processo e fale o texto que foi devolvido. A chave para todas estas maquinações complicadas é que cada objeto pode usar só certas propriedades e métodos (como nós dissemos perto do começo desta seção) e não pode usar as propriedades e métodos de outros objetos. Adquirir as informações nós queremos, nós temos que usar o método correto ou propriedade para nosso objeto atual, e nós temos que usar aquele método ou propriedade de certo modo isso devolverá um objeto novo até o que é corretamente fixo nos permita acessar a informação nós precisamos do próximo nível tabixo na hierarquia. Se nós fizermos isto corretamente, nós adquiriremos eventualmente à informação da que nós precisamos. Executemos uma experiência para mostrar para você como as propriedades usaram no GetParagraphContent função extrato a informação nós precisamos do objeto de aplicação e como alterando o modo nós usamos essas propriedades altera a informação nós ouvimos no final das contas. Uma nota de cautionary é requerida antes de continuar. A experiência seguinte envolve modificando o WINWORD.JSS e arquivos de WINWORD.JSB. É fortemente aconselhou que você faça cópias auxiliares destes arquivos para segurança antes de fazer quaisquer das mudanças. Isto lhe permitirá recobrar cópias não danificadas destes arquivos no caso de você inadvertidamente fratura algo. Executar esta experiência, abra o arquivo de script para Palavra 8 ou 9, e mova ao fim do arquivo. Porque versões de JAWS depois das 3.2 mudaram ou eliminaram o script de SayParagraph e função de GetParagraphContent descreveram acima, nós vamos inserir versões especiais destes que deveriam permitir alguém usar qualquer versão de JAWS tentar as experiências seguintes. Cópia e cola a função e script mostrado tabixo em seu arquivo de WINWORD.JSS, enquanto tendo certeza a função se aparece dentro o arquive antes do script: Função de fio TestGetParagraphContent () var conteste o deixe o = oWord.Selection.Paragraphs(1). Gama; retorno (o.Text); EndFunction script TestSayParagraph () SaveCursor () PCCursor () se (GetLine () == "") então Say ("espaço em branco", OT_MESSAGE) outro Say (TestGetParagraphContent (), OT_TEXT) EndIf EndScript Logo, imprensa ALT+F para derrubar tabixo o cardápio de Arquivo e apertar a carta Y sincronizar sua documentação. Você deveria ouvir a mensagem, "sincronização completa." Agora, coloque seu cursor dentro do script de TestSayParagraph e imprensa CTRL+D abrir o diálogo de Informação de script. Não é necessário entrar em qualquer Sinopse ou Descrição desde que este script é temporário, e nós estaremos apagando isto quando nós formos terminados. Assim, tab em cima de para o Nomeie campo Fundamental Quente e entre em uma batida de tecla conveniente que não vai interfira com outras chaves quentes você pode ter definido ou qualquer chave de acelerador de Palavra. O autor escolheu ALT+CTRL+F12 como sendo suficientemente incomum sobre qualifique para isto propósito. Então imprensa o OK. Você será devolvido ao Gerente de script principal que edita janela. Há um passo final que deve ser dado antes de nós pudéssemos começar nossa experiência. Você tem que acrescentar alguns linhas de código ao arquivo de script assim a função de teste e script compile e corra. Antes de o AutoStartEvent funcionarem, a primeira função no arquivo de script, coloque o seguinte duas linhas: Globals Conteste oWord Finalmente, você tem que colocar o seguinte cinco linhas ao término do AutoStartEvent funcione, logo antes a linha de EndFunction: deixe oWord = MSOGetMenuBarObject () deixe oWord = oWord.Application; inicializa um ponteiro ao objeto de aplicação de Palavra se! oWord () então deixe oWord = GetObject ("Word.Application"); EndIf Estas adições definem uma variável de objeto global chamada oWord e então inicializa um ponteiro ao Palavra objeto. Agora, imprensa CTRL+S, e você deveria ouvir "compile complete." Se você não faz, e você adquire alguns erros, confere seu trtablho e fixa qualquer erro até que o arquivo compila prosperamente. Agora, coloca seu cursor na função de TestGetParagraphContent e seta até a primeira linha depois que o o variável seja declarado. Nós estaremos fazendo algumas modificações para esta linha em um momento, mas antes de nós fizéssemos que, devolvamos atrás para foco Formular para um momento e explorar o que esta função está fazendo em seu estado inalterado. Você deveria devolver Formular e colocar o cursor na primeira palavra deste parágrafo. Use seu TestSayParagraph teclado comando (ALT+CTRL+F12, no exemplo do autor), e você deveria ouvir este parágrafo inteiro falado. Agora, use a SETA de SHIFT+DOWN chave quente selecionar a primeira linha deste parágrafo. Confirme que você fez isto lendo o texto selecionado com SETA de SHIFT+INSERT+DOWN, e você deveria ouvir a primeira linha do parágrafo falada. Agora, use o TestSayParagraph chave quente novamente. O que você deveria ouvir é o parágrafo inteiro falado novamente. Certo, nós confirmamos que a função de GetParagraphContent é inteligente bastante nos ler o inteiro parágrafo, embora nós selecionássemos uma porção disto. Isso é bom, porque isso é o modo que nós queremos esta função para se comportar. Agora, volte para o Gerente de script e remove o Paragraphs(1) propriedade da linha que contém isto. Quando você for terminado, a linha deveria se parecer a linha tabixo. deixe o = oWord.Selection.Range; Economize e recompile seu script com CTRL+S. Retorno para Formular, e coloca o pointat de inserção o começo do mesmo parágrafo antes do que você usou. Não tenha certeza nenhum texto é selecionado, e então usa o TestSayParagraph novamente chave quente, e observa o que acontece. Como interessante! Nada é falado! Por que não? Bem, desde nada é selecionado, a propriedade de Seleção devolve um objeto de Seleção que é equivalente ao ponto de inserção. Desde que nós tiramos a propriedade de Parágrafos, a Gama, propriedade operará diretamente neste objeto de Seleção e devolverá um objeto de Gama que tem um começo e ponto de fim no mesmo local, o local da inserção, ponto. Obviamente, uma gama que é zero caráter largo não pode conter nenhum texto, assim a propriedade de Texto na próxima linha do script devolve um fio nulo ou vazio, e nós não ouvimos nada. Agora, execute uma mais experiência. Selecione a primeira linha do parágrafo novamente com SETA de SHIFT+DOWN, e use o TestSayParagraph chave quente novamente. Este tempo você ouvirá o texto selecionado falado. Isto é porque o objeto de Seleção que é devolvido pela propriedade de Seleção inclui tudo do texto selecionado, e a propriedade de Gama fixará agora no princípio uma gama e fim do texto selecionado. A propriedade de Texto na próxima linha devolverá então este texto que será devolvido em troca ao script de chamada por falar. Tenha certeza você se lembra de repor a propriedade de Parágrafos na função da mesma maneira que estava antes e recompilar o arquivo de script de forma que a função trtablharão corretamente novamente. Agora a propriedade de Parágrafos vai, uma vez mais, devolva um objeto de Parágrafo do objeto de Seleção e alimenta esta informação à propriedade de Gama. Uma vez mais, você ouvirá o parágrafo inteiro falado, se ou nem todo texto é selecionado. Uma vez você é experimentando terminados com a função de teste e script, você pode desejar os apagar do arquivo de script. 7.4 Fluxo controlando Scripts sempre não são executados dentro um linear, tampe para assentar moda, com cada e todo ser de linha executou em ordem e só uma vez. Às vezes algumas declarações é executado muitas vezes, e às vezes são saltadas certas declarações. Os tipos de declarações que controlam o fluxo ou sucessão de eventos de declarações de script é discutido tabixo. Há três tipos de fluxo em um script: * Seqüente - Neste método um grupo de declarações é corrido em ordem, enquanto começando no princípio, e continuando ao fim. Este fluxo linear é o formato mais simples. * Seleção (Condicional) - Em uma seleção, o fluxo de atividade entra a um "garfo na estrada" e tem que escolher um ou o outro de dois ou mais caminhos. Qual caminho é levado depende de comparações ou condições que são feitas pelas declarações de script. Dependendo dos valores de certas variáveis, um caminho ou outro será levado. Este processo que se ramifica é chamado. * Iterative - Uma seção de iterative "dá laçada" (i.e., executa a mesma declaração ou grupo de declarações em cima de e em cima de), qualquer um enquanto uma certa condição é verdade ou até que uma certa condição é conhecida. Um script pode conter qualquer ou todas estas técnicas. Olhemos para exemplos de cada destas atividades. 7.4.1 seqüente Todas as declarações com as que nós trtablhamos tão longe são declarações seqüentes. Isso significa que cada um dos atos de declarações em sua volta começando ao topo de o script e continuando à declaração de EndScript. O seguinte é um exemplo de um script com só declarações seqüentes: script SayTheAValue () Var Int UM Deixe UM = 1 SayInteger (UM) EndScript 7.4.2 seleção (Condicional) A estrutura de declaração Se-de então provê uns meios de selecionar um caminho ou outro. Três declarações são requeridas para um Se estrutura: Se, Então e EndIf. Deixe comece com uma declaração Se-de então muito simples. Se (x == 1) Então Say ("Você tem razão", OT_JAWS_MESSAGE) EndIf Se, e só se, o X variável é igual a 1, o script executará o Say declaração e say as palavras "Você tem razão." Aqui é um exemplo ligeiramente mais complexo. Se GetWindowName (GetCurrentWindow ()) == "Principal" Então Say ("Na janela principal"., OT_JAWS_MESSAGE) EndIf A função, GetWindowName, e seu parâmetro, GetCurrentWindow, usado no Se declaração devolve o título da janela atual. Assim o que acontece é isto. Se e só se o nome da janela atual é Principal, então o Say função é executada. Caso contrário é ignorado. Nós só levamos o "caminho" De então se a condição do Se declaração é verdade. Enquanto o Se e Então declarações são declarações realmente separadas, é freqüentemente convencional para os pôr na mesma linha. O anterior grupo de declarações vai então olhe como segue: Se GetWindowName (GetCurrentWindow ()) == "Principal" Então Say ("Na janela principal"., OT_JAWS_MESSAGE) EndIf Nós mostraremos nossas declarações Se-de então de agora em diante nesta forma. Há duas declarações opcionais dentro um Se-então estrutura, o Outro e declarações de ElIf. Cada uma destas declarações provê um caminho alternado, mas faz assim em uma moda um pouco diferente. O Outro declaração conta para o script fazer certas coisas se, e só se, o precedendo Se declaração é achada para ser falso. Por exemplo, Se GetWindowName (GetCurrentWindow ()) == "Principal" Então Say ("Na janela principal"., OT_JAWS_MESSAGE) Outro Say ("Não em uma janela conhecida"., OT_JAWS_MESSAGE) EndIf Esta sucessão dirá uma coisa se você está na janela principal e qualquer outra coisa se você não é. Aqui é um exemplo de uma três filial de modo: Se GetWindowName (GetCurrentWindow ()) == "Principal" Então Say ("Na janela principal"., OT_JAWS_MESSAGE) Outro Se GetWindowName (GetCurrentWindow ()) == "Alterne" Então Say ("Na janela alternada"., OT_JAWS_MESSAGE) EndIf Outro Say ("Não em uma janela conhecida"., OT_JAWS_MESSAGE) EndIf Aqui nós dizemos uma coisa se nós estivermos na janela principal, nós dizemos uma segunda coisa se nós estamos em uma janela nomeado "substituto", e nós dizemos uma terceira coisa se nós ou não estamos dentro destas duas janelas. A declaração de ElIf provê um modo mais simples de formular uma filial que diz "Faz qualquer outra coisa se uma condição diferente for verdade." A anterior sucessão de script pode seja reformulado para fazer as mesmas coisas que usam uma declaração de ElIf exatamente. Para isto é mostrado tabixo: Se GetWindowName (GetCurrentWindow ()) == "Principal" Então Say ("Na janela principal"., OT_JAWS_MESSAGE) ElIf GetWindowName (GetCurrentWindow ()) == "Alterne" Então Say ("Na janela alternada"., OT_JAWS_MESSAGE) Outro Say ("Não em uma janela conhecida"., OT_JAWS_MESSAGE) EndIf Aqui novamente nós temos caminhos alternativos para viajar. Se o nome de janela for Principal, nós tabixamos seu caminho. Se o nome de janela for Alternado, nós tabixamos aquele caminho. Caso contrário nós tabixamos o Outro caminho. A declaração de ElIf acontece de um Outro declaração seguida por um Se declaração. Você pode usar tantas declarações de ElIf quanto você gosta. Se podem ser aninhadas declarações. Isto significa que um Se declaração pode ser colocada dentro de outro Se declaração. Isto lhe permite conferir para uma condição particular só se outra condição existe. O segundo Se condição só será testada se o primeiro é verdade. A sucessão de declarações dentro do segundo Se-então teste vá, assim, só seja executado se são achadas ambas as condições para ser verdades. Não esqueça de usar uma declaração de EndIf para cada e todo Se declaração que você usa. Aqui é um exemplo de um par aninhado de Se-então declarações. Se GetWindowName (GetCurrentWindow ()) == "Principal" Então Se GetWindowClass (GetCurrentWindow ()) == "Edite" Então Say ("No principal edite janela"., OT_JAWS_MESSAGE) Outro Say ("Na janela principal", OT_ JAWS_MESSAGE) EndIf; É este um edite janela? Outro Say ("Não em uma janela conhecida", OT_ JAWS_MESSAGE) EndIf; É este a janela principal? Primeiro neste exemplo, nós conferimos para ver se nós estivermos na janela principal. Se nós formos, nós conferimos para ver se nós estivermos dentro um edite janela. Nesse caso, nós dizemos que nós estamos dentro o principal edite janela. Se não é um edite janela, nós há pouco dizemos que nós estamos na janela principal. O edite condição só será conferida se a condição principal for verdade. Note que nós usamos comentários para indicar que Se teste que a declaração de EndIf está terminando. Isto é muito útil prevenindo confusão quando usando aninharam declarações Se-então. 7.4.3 Iterative Como mencionado acima, uma seção de repetição provê uma função dando laçada. Uma volta é usada para executar uma sucessão de várias vezes de declarações, enquanto encurtando o número assim de declarações requeridas. Quantas vezes também, a pessoa não sabe sempre com antecedência a sucessão precisará ser repetida, enquanto dando laçada assim provê um modo para determinar o número de repetições automaticamente, dependendo de conclusões derivaram de operação de script. Dar laçada é terminado com um Enquanto-EndWhile sucessão. Uma Volta de Tempo é uma sucessão de declaração que repete ou voltas isto enquanto uma condição particular é verdade ou até que uma condição particular fica verdadeira. Uma volta de Tempo consiste em duas partes, a declaração de Tempo que fixa a condição a ser testada para, e a declaração de EndWhile que termina a volta. Todas as declarações dentro dos limites do Tempo e declarações de EndWhile será executado repetidamente até as condições na declaração de Tempo já está satisfeito. Aqui é um exemplo: Levemos um problema bastante comum. Você está trtablhando em um programa de editor que numera as linhas com cinco números de dígito. Então, enfileire 1 é listado como 00001. JAWS gastam muita leitura de tempo os zeros. Seria agradável para começar leitura ao primeiro non-zero não vá. Este é um lugar bom para usar uma volta de tempo. Considere o script seguinte: script SayEditLine () SaveCursor () JAWSCursor () RouteJAWSToPC () JAWSHome () Enquanto (GetCharacter () == "0") NextCharacter () EndWhile SayFromCursor () RestoreCursor () EndScript Usando este script para ler a linha eliminariam os zeros para nós. Aqui é como faz isto. As primeiras quatro linhas exceto o cursor original, ative as JAWS cursor, e dirige isto ao começo da linha no que nós somos. Então os olhares de volta de Tempo a cada caráter no começo da linha em troca e confere para ver se é um zero. Se for, há pouco passa como bem para o próximo caráter e cheques isto. Quando acha um que não é um zero, a condição por continuar dando laçada, (GetCharacter () == 0) já é verdade, e a volta de Tempo é terminada. JAWS continuam processando o resto do script depois da volta de Tempo então. Isto envolve leitura o resto da linha do cursor para o fim da linha. Isso omite tudo dos zeros. Há uma advertência sobre o uso de Enquanto voltas que devem ser mencionadas aqui. Desde que a volta continua até que uma condição fica verdadeira ou falsa, a pessoa deve ter cuidado não montar uma volta com uma condição que não será satisfeita. Fazer montariam uma volta que vai ciclo sempre, uma volta infinita, assim. O efeito disto seria trancar o computador até que o programa é terminado manualmente. Pense cuidadosamente na condição pretendeu terminar a volta para estar segura se tornará satisfeito em algum momento. Se você achado que o computador parece trancar depois que você executar um script novo com uma volta de Tempo nisto, isto provavelmente é o que está acontecendo. Um modo para evitar este problema enquanto projetando Enquanto voltas são incluir algumas declarações projetadas para quebrar a volta depois de um certo número de repetições. Um exemplo disto é mostrado tabixo: Enquanto FirstVariable 100) Então Retorno EndIf EndWhile Isto Enquanto volta é projetada para correr até que FirstVariable fica maior que SecondVariable. Saymos você fez um erro de lógica, e FirstVariable nunca excede SecondVariable. Sem as declarações extras projetaram prevenir isto, a volta tentaria sempre correr. Porém a segunda linha soma 1 à variável chamado BreakOutVariable cada tempo os ciclos de volta. Quando o valor de BreakOutVariable exceder 100, a declaração Se-de então ao término da volta executará um retorno e terminará o ciclo. Uma vez você está seguro a volta de Tempo está correndo corretamente, você pode remover a fratura fora lógica. Lição de casa #5 Usemos o programa de Registrador São novamente para esta tarefa. Tempo passado que nós escrevemos para um script para este programa notamos nós que a exibição de contador sobre os botões espetáculos ambos o decorreu tempo e o tempo total do arquivo são. Escreva um script que usa declarações e declarações de ElIf que conferem para ver Se-então se os decorreram tempo é zero. Nesse caso, tem diz a mensagem, "no começo da gravação". Se os decorreram tempo é maior que zero mas menos que o tempo total, tenha diz, "Playback só parcialmente complete." Se os decorreram tempo é igual ao tempo total, tem diz, "Playback está completo", e tem trinco o "Busque Começo" ou rebobina botão para devolver o contador para zerar. Então, tenha a pausa de script para dar o tempo de aplicação para rebobinar, e então confira o contador para ver se está a zero. Nesse caso, tem diz a mensagem, "Rebobine complete." Se o contador não for nenhum zero, tem diz a mensagem, "Rebobinado falhou. Por favor confira suas baterias." Também, use variáveis locais para armazenar os valores dos decorreram tempo e tempo total. Uma possível resposta pode ser achada em Apêndice o A. (Veja Capítulo 14.4.) 7.5 Funções usuário-definidas Você pode usar o idioma de script para escrever ou editar uma função usuário-definida. A diferença entre uma função embutida e uma função usuário-definida, como foi discutido sobre, é aquelas funções usuário-definidas podem ser modificadas enquanto funções embutidas que são duras codificaram em JAWS, não possa. A diferença entre uma função usuário-definida e um script é que um script pode ser prendido a uma batida de tecla e não pode prover um retorno enquanto uma função usuário-definida não pode ser prendida a uma batida de tecla e pode ser feita proveja um retorno. Funções usuário-definidas corridas sempre que eles são chamados um script ou outra função usuário-definida de dentro. 7.5.1 Funções simples Normalmente são criadas funções usuário-definidas como um módulo auto-suficiente de código de scripting que foi projetado para realizar um propósito específico. Isto é particularmente útil quando o trtablho que a função realiza será executado numerosos tempos e através de scripts diferentes. Isto permite usar de novo o código da função sem tendo que reescrever isto tempos múltiplos. Todo o usuário tem que fazer é chamada a função de outro script ou funciona, e o trtablho será executado. Então os chamaram função renuncia controle atrás ao script de chamada ou função que, em troca, continua com seu processo. O tipo mais simples de função não recebe qualquer dados (parâmetros) de ou devolve qualquer dados (lucros) para o script de chamada. Deixa olhar a um exemplo de uma função usuário-definida que vem do arquivo de script para Microsoft Excel de uma versão cedo de JAWS, EXCEL.JSS. Este script é chamado NextSheet, e seu propósito é mover o foco à próxima planilha eletrônica. Aqui é o código do script: script NextSheet () ; interruptores para a próxima folha e lê o número {CONTROL+PPAGE TABIXO} Demora (1) SayWindowPromptAndText () EndScript Nota que o script chama uma função chamado SayWindowPromptAndText. Você não achará aquela função entre as JAWS embutidas funciona. É uma função usuário-definida isso foi escrito por programadores a Henter-Joyce e é incluído em EXCEL.JSS. Aqui é o código para SayWindowPromptAndText daquela mesma versão de JAWS: Função SayWindowPromptAndText () SaveCursor () InvisibleCursor () RouteInvisibleToPC () Se (FindLastAttribute (ATTRIB_BOLD)) Então SayChunk () Outro Say (msg121, OT_MESSAGE); tab de folha de bolded" não achou" EndIf EndFunction Agora passemos pelo procedimento de criar uma função simples, usuário-definida. Nós teremos como nossa meta a criação de uma função que fala nosso nome, da mesma maneira que nós fizemos em nosso primeiro script. Como antes de, nós colocaremos esta função no Notepad script arquivo. Siga os passos como esboçado tabixo. 1. Notepad aberto desde o começo grupo de Menu/Programs/Accessories. 2. Abra o Gerente de script apertando INSERT+0 ou apertando INSERT+F2 seguiu por S e ENTRA. JAWS lhe falarão que você está em NOTEPAD.JSS, a fonte de script, arquivo para Notepad. 3. Escolha script Novo do cardápio de script ou use o acelerador combinação fundamental, CTRL+E. 4. O diálogo de script Novo se aparece, e nós podemos nomear nossa função agora e podemos escrever sua documentação. Quando o diálogo de script Novo se aparecer, o cursor está no script Nomeie campo. Digite SayName. Capitalize o S e N, e não ponha em um espaço. 5. Aperte TAB duas vezes para mover ao campo de Sinopse. Digite as palavras, "Say nosso Nome." (Evitando a Lata seja prendido teclar checkbox sem conferir isto, nós, falou para o Gerente de script que nós estamos criando uma função, não um script.) 6. Aperte TAB para mover ao campo de Descrição, e digite as palavras, "O nome da pessoa que escreveu esta função". 7. Aperte TAB para mover ao campo de Categoria, e digite o palavra "Teste." O campo de Categoria é um edita combo, assim você pode escolher uma categoria digitando a pessoa ou por arrowing tabixo pela lista achar um que é apropriado. 8. Aperte TAB para se mudar para a Função Devolve campo, e seta até Nulo. Nós escolhemos Nulo porque nossa função não está devolvendo informação ao script de chamada. 9. Nós não precisaremos de qualquer outro campo preenchido para nosso script, assim TAB em cima de ao OK e imprensa ENTRAM fechar o diálogo de script Novo e inserir nossa função em branco no área editando. 10. Nós estamos agora atrás na área de texto principal do Gerente de script, e nós temos uma função em branco onde a primeira linha diz SayName para Função Nula" () " e a última linha diz "EndFunction." Nós fomos colocados entre estas duas linhas. Seta até a primeira linha em branco depois da primeira linha, e você está pronto para começar escritura o corpo da função. 11. Você precisará de só uma linha para esta função. Nós usaremos a função de SayMessage. Isto é semelhante à função de Saystring que nós usamos para nosso primeiro script, mas é preferido porque permite o usuário para especificar uma constante de tipo de produção que é usada para contar JAWS como e quando falar a mensagem. Esta linha será SayMessage (OT_JAWS_MESSAGE, "Meu nome é XXX") onde XXX é seu nome. Entrar esta linha em sua função, imprensa CTRL+I para abrir o diálogo de Função de Suplemento. Então digite S, UM, Y, E m. Você deveria ouvir JAWS dizerem SayMessage, o nome da função embutida que foi selecionada. Imprensa Entra para aceitar esta função. 12. Lhe pedirão logo que proveja o tipo de produção constante. Uma lista de possibilidades é determinada no arquivo HJCONST.JSH. Nós escolheremos e digitaremos o mais apropriado um, OT_JAWS_MESSAGE. Depois de digitar a constante e apertar o ENTRE em chave, lhe pedirão agora que proveja o fio você desejo falado como uma mensagem longa. Tipo "Meu nome é XXX" e não esquece de incluir os aspa. O próximo parâmetro é a mensagem curta requerida pela função de SayMessage. Nós não estaremos usando uma mensagem curta aqui, tão só imprensa ENTRA novamente. Serão discutidas mensagens longas e curtas em uma seção posterior. (Veja Capítulo 8.9.) Depois que você aperte ENTRE novamente, você será devolvido à área editando onde sua função está agora completa. 13. Você deveria ter agora exatamente o seguinte três linhas em sua página como eles se aparecem tabixo. Se lembre aquele fim não é nenhum bem bastante como computadores espere que nós sejamos preciso e perfeito. Também, alguns linhas em branco extras não são importantes. JAWS ignoram linhas em branco em funções. Função nula SayName () SayMessage (OT_JAWS_MESSAGE, "Meu nome é XXX") EndFunction 14. Agora nós precisamos economizar e compilar o Notepad script arquivo. Aperte CTRL+S e você deveria ouvir, "Compile Complete." Se não, volte e repasse os passos e prova novamente. Nós criamos uma função que executará o mesmo trtablho como nosso primeiro script agora. Esta função poderia ser chamada qualquer hora nós queremos nosso nome falado. Chamar o funcione, nós usaríamos um script formulado como mostrado tabixo. script SpeakName () SayName () EndScript Este script simples chamará a função que dirá nosso nome. Agora poderia parecer um pequeno tolo para ir para tudo desta dificuldade quando nós pudéssemos realizar o mesmo atarefe com nosso primeiro script. Claro que, para um caso simples assim que seria verdade. Porém, funções podem ser longas e complicadas. No caso de tal complexo funções, deveria ser óbvio que é muito mais simples para criar o código uma vez e então chame qualquer hora nós precisamos isto. Caso contrário, nós teríamos que divertir tudo de o código para todo único script donde foi precisado. A função usuário-definida nós discutimos alguns parágrafos acima, SayWindowPromptAndText, é o tipo mais simples de função usuário-definida porque não aceita parâmetros de e não devolve valor ao script de chamada. Porém, funções usuário-definidas podem fazer ambos estas coisas. Deixa olhar a exemplos desses. 7.5.2 funções Que Requerem Parâmetros O primeiro exemplo é uma função que aceita parâmetros. Se lembre um parâmetro é nada além de um pedaço de informação que você envia em cima de para a função para isto para use quando correr. A única razão que nós enviamos isto a tempo de corrida em lugar de incluir isto como parte do código é porque as informações podem ser diferentes cada tempo nós corra a função. Note o parâmetro é declarado como uma variável mas é colocado entre os parênteses que seguem o nome de função em vez de depois da palavra "Var" se aproxime o começo do script. Função nula ScriptAndAppNames (sFileName de fio) var amarre theString deixe theString = sFileName Se (GetVerbosity () == o novato) Então deixe theString = theString + msg374; " colocações estão carregadas" outro deixe theString = theString + msg374b; " colocações" endif Say (theString, ot_help) If(GetVerbosity () == o novato) Então Say (msg376, ot_help); "A aplicação que é atualmente usado é o " EndIf Say (GetAppFileName (), ot_help) SpellString (GetAppFileName ()) EndFunction Você poderia pensar no parâmetro de fio, sFileName, como uma entrada pela qual nós podemos passar o nome do arquivo de script atual na função quando é chamado. O parameter'sFileName não é igual ao filename, está mais como uma variável que segurará o filename temporariamente assim o filename podem ser passados à função que usará isto. Esta declaração de chamada seria formulada como segue: ScriptAndAppNames ("ApplicationName") Onde ApplicationName representa o nome da aplicação que você deseja passar à função. Esta chamada de função está dizendo o fio, "ApplicationName", é seja passado na função, ScriptAndAppNames, pelo parâmetro, sFileName. A função "sabe" esta informação então. Então, pode ser usado nos falados mensagens dentro as quais são contidas o Say declarações. Aqui a informação do parâmetro é combinada com texto fixo para completar as mensagens que serão faladas durante execução. Levemos a função antes da que nós escrevemos, SayName, e reformule para aceitar nosso nome como um parâmetro em vez de ter nosso nome conteve no código da função. Siga os passos esboçados tabixo. 1. Notepad aberto desde o começo grupo de Menu/Programs/Accessories. 2. Abra o Gerente de script apertando INSERT+0 ou apertando INSERT+F2 seguiu por S e ENTRA. JAWS lhe falarão você está em NOTEPAD.JSS, o arquivo de fonte de script, para Notepad. Escolha script Novo do cardápio de script ou use o acelerador combinação fundamental, CTRL+E. 3. O diálogo de script Novo se aparece, e nós podemos nomear nossa função agora e podemos escrever sua documentação. Quando o diálogo de script Novo se aparecer, o cursor está no script Nomeie campo. Digite SayName. Capitalize o S e N, e não ponha em um espaço. 4. Aperte TAB duas vezes para mover ao campo de Sinopse. Digite as palavras, "Say nosso Nome." (Evitando a Lata seja prendido teclar checkbox sem conferir isto, nós, falou para o Gerente de script que nós estamos criando uma função, não um script.) 5. Aperte TAB para mover ao campo de Descrição, e digite as palavras, "O nome da pessoa que escreveu esta função". 6. Aperte TAB para mover ao campo de Categoria, e digite o palavra "Teste." O campo de Categoria é um edita combo, assim você pode escolher uma categoria digitando a pessoa ou por arrowing tabixo pela lista achar um que é apropriado. 7. Aperte TAB para se mudar para a Função Devolve campo, e seta até Nulo. Nós escolhemos Nulo porque nossa função não está devolvendo informação ao script de chamada. 8. Aperte CTRL+TAB para ir para a tab de Parâmetros. Você será colocado no campo de parâmetros existente. Este campo está vazio desde que nenhum parâmetro existe como ainda. 9. TAB em cima de para o Parâmetro Novo edite campo e digite "UserName." 10. TAB duas vezes até que você adquire à Descrição edite campo e digite "O nome do usuário." 11. TAB em cima de para o Disponível Digita listbox e seta até Fio. 12. TAB em cima de para o Some botão e aperte o Spacebar para somar o parâmetro. Você será devolvido ao Parâmetro Novo edite campo, mas nós não usaremos isto novamente desde nós estamos somando só o um parâmetro. TAB em cima de para o botão de OK, e imprensa ENTRA. 13. Nós estamos agora atrás na área de texto principal do Gerente de script, e nós temos uma função em branco onde a primeira linha diz SayName para Função Nula" (Fio UserName) " e a última linha diz "EndFunction." Nós fomos colocados entre estas duas linhas. Seta até a primeira linha em branco depois da primeira linha, e você está pronto para escritura de começo o corpo da função. 14. Você precisará de só uma linha para esta função, mas será ligeiramente diferente do que nós usamos na função de SayName que nós previamente escrevemos. Esta linha será SayMessage (OT_JAWS_MESSAGE, "Meu nome é " + UserName) onde UserName é o parâmetro que passa seu nome na função. Entrar esta linha sua função, imprensa CTRL+I para abrir o diálogo de Função de Suplemento. Então tipo S, UM, Y, e M. Você deveria ouvir JAWS dizerem SayMessage, o nome da função embutida, isso foi selecionado. Imprensa ENTRA para aceitar esta função. 15. Lhe pedirão logo que proveja o tipo de produção constante. Uma lista de possibilidades é determinada no arquivo HJCONST.JSH. Nós escolheremos e digitaremos o mais apropriado um, OT_JAWS_MESSAGE. Depois de digitar a constante e apertar o ENTRE em chave, lhe pedirão agora que proveja o fio você desejo falado como uma mensagem longa. Tipo "Meu nome é" + UserName, e não esquece de incluir os aspa. O próximo parâmetro é a mensagem curta requerida pela função de SayMessage. Nós vamos não está usando uma mensagem curta aqui, tão só imprensa ENTRA novamente. Serão discutidas mensagens longas e curtas em uma seção posterior. (Veja Capítulo 8.9.) Depois que você aperte ENTRE novamente, você será devolvido à área editando onde sua função está agora completa. 15. Você deveria ter agora exatamente o seguinte três linhas em sua página como eles se aparecem tabixo. Se lembre aquele fim não é nenhum bem bastante como computadores espere que nós sejamos preciso e perfeito. Também, alguns linhas em branco extras não são importantes. JAWS ignoram linhas em branco em funções. Função nula SayName(String UserName) SayMessage (OT_JAWS_MESSAGE, "Meu nome é " + UserName) EndFunction 16. Agora nós precisamos economizar e compilar o Notepad script arquivo. Aperte CTRL+S e você deveria ouvir, "Compile Complete." Se não, volte e repasse os passos e prova novamente. Nós criamos uma função que executará o mesmo trtablho como nossa função prévia agora. Porém, o nome a ser falado não é codificado na função, é passado em como um parâmetro. Esta função poderia ser chamada qualquer hora nós queremos nosso nome falado. Para chamar a função, nós usaríamos um script formulado como mostrado tabixo. script SpeakName () SayName ("XXX") EndScript Quando a função que SayName é chamado, o fio que "XXX" que representa nosso nome é passado na função pelo parâmetro, UserName. A função tem isto então dados e pode falar isto como parte do Say mensagem. 7.5.3 funções Que Provêem Lucros Agora olhemos para uma função que provê um retorno. Um retorno é informação que é mandada de volta da função ao script de chamada ou função quando correr. Isto devolveu informações podem ser usadas então pelo script de chamada ou função. Note o tipo da informação devolvida (i.e., fio, Int, Objeto, manivela, ou Nulo) é declarado antes do nome de função. A função seguinte vem de EXCEL.JSS, o arquivo de script para Microsoft Excel. Int Function GetExcelVersion () var controle WinHandle deixe WinHandle = GetAppMainWindow (GetFocus ()) deixe WinHandle = GetFirstChild (WinHandle) se (GetWindowClass (WinHandle) == "Excel4") então retorno VERDADEIRO; Este é Superar 97 outro retorno FALSO; este é Excel95 ou mais cedo EndIf EndFunction Você poderia ter entendido que o propósito desta função é determinar se nós estamos correndo Supere 97 ou não. O que acontece é que a função executa um teste para descobrir se nós estamos dentro Supere 97. Nesse caso, a função devolve ou manda de volta um valor de verdadeiro para o script de chamada. Se não, um valor de falso é devolvido. Devolvendo este valor, nós meramente significa que nós estamos informando o script de chamada do resultado da determinação. O script de chamada pode ir então em e pode fazer outro coisas, dependendo em se o valor é verdade ou falso, i.e., se nós realmente estamos dentro Supere 97 ou não. Aqui é um exemplo de como esta função seria chamada de certo modo que as informações de retorno podem ser usadas para tomar uma decisão: Se GetExcelVersion == retifique Então (Bloco de declarações que nós queremos executar se nós estamos dentro Supere 97) Outro (Bloco de declarações que nós queremos executar se nós não estamos dentro Supere 97) EndIf Em outro palavra, se GetExcelVersionis retificam (quer dizer, lucros um valor de verdadeiro depois que fosse chamado), então nós executaremos fixado de declarações. Se não é verdade (quer dizer, devolveu um valor de falso depois que fosse chamado), então nós executaremos o outro jogo. A propósito, está na hora de você aprender um atalho que os escritores de script usam freqüentemente em situações como estes. A declaração seguinte é um pequeno mais curto que Se GetExcelVersion == retifique Então, mas significa a mesma coisa. Se GetExcelVersion Then Quando você ver declarações assim, é compreendido que nós insinuamos "== verdadeiro." É omitido para conveniência, mas todo o mundo deveria entender que "== verdadeiro" ou "== 1" (o qual, como sabemos agora nós é uma declaração equivalente) sempre é incluído em uma declaração assim. Lição de casa #6 JAWS anunciam letras maiúsculas os falando em um lance diferente. Alguns usuários gostariam de ouvir palavras que são tudo capitalizadas precedido pelas palavras "todos os bonés" quando eles são soletrados. Escreva uma função chamada SayAllCaps que faz as coisas seguintes: 1. Deveria concordar como um parâmetro a palavra o cursor é em qual é a palavra a ser testada. Use CurrentWord como o parâmetro de fio do que aceita os dados o script de chamada. 2. Deveria conferir a palavra para ver se contiver qualquer carta que não é capitalizada. Assim que ache um que não é, deveria devolver um fio nulo que é, dois aspa com nada entre eles. Se acha que todas as cartas são capitalizados, deveria devolver um "todos os bonés" fio. Sugestão - Este é um trtablho bastante complicado, assim nós vamos lhe dar um começo. Você deveria usar a função embutida, StringContains, determinar se a palavra contém qualquer non-capitalizou cartas. (Estas é as únicas JAWS função embutida que é caso sensível.) Assim que o teste determine que uma carta está presente que é não capitalizado, um retorno de um fio nulo deveria ser executado desde que nenhum mais adiante prova é requerida. Se nenhuma letra minúscula é achada, deveria devolver o "tudo bonés" amarram. A função também deveria devolver um fio nulo se qualquer número estiver presente para impedir isto de dizer "todos os bonés" ao testar um número. Finalmente, o função deveria conter código para impedir isto de dizer "todos os bonés" se o cursor estiver em um espaço em branco ou uma marca de pontuação ou qualquer outro caráter non-alfabético. Realizar isto, você precisa saber que todo tais caráter non-alfabéticos têm valores que são menos que a carta, um ou maior que a carta, z. Você deveria testar para ver se sua palavra atual conhece este critério e devolve um fio nulo se fizer. Finalmente, para utilizar esta função, a parte final do problema é modificar o script chamado SayWord que pode ser achado em DEFAULT.JSS. Você tem que modificar isto script para chamar o SayAllCaps funciona no momento apropriado e executa o teste. SayWord é ativado quando você aperta a combinação fundamental, INSERT+NUM PAD 5. O script de SayWord tem uma seção inicial que usa a função embutida IsSameScript conferir se você apertou duas vezes depressa INSERT+NUM PAD 5. Apertando isto tecle duas vezes combinação conta para JAWS soletrar a palavra em vez de dizer isto. Faça sua chamada de função à função de SayAllCaps no lugar apropriado e chame de tal um modo que falará o fio devolveu pela função logo antes soletra a palavra. Se a função achou que a palavra não é todo superior embale, devolverá um fio nulo e, assim, não say nada. Se a função achou a palavra para ser todo maiúscula, devolverá o fio, "todos os bonés" que você ouvirá então antes da palavra é soletrado. Sugestão final - Você terá que chamar a função dentro um Say declaração para ouvir seu fio devolvido falado. Uma possível resposta pode ser achada em Apêndice o A. (Veja Capítulo 14.5.) 7.5.4 evento Funciona Também há uma categoria especial de funções usuário-definidas cujo fim de nomes com a palavra, evento. Estes são chamados evento funciona, e eles correm automaticamente sempre que os eventos associados deles/delas acontecem. Por exemplo, uma função chamada MouseMovedEvent corre sempre que o cursor de rato muda posição. O propósito destes evento funções são permitir JAWS para executar tarefas específicas automaticamente sem esperar pelo usuário iniciar a ação com uma batida de tecla. Alguma clarificação é requerida aqui. Nós chamamos estes funções de evento funções usuário-definidas porque algum usuário escreve ou modifica as declarações que eles contêm. Porém, eles são diferentes de outro funções usuário-definidas porque os usuários não podem inventar funções de evento novas. O ones que existem fazem assim porque eles foram codificados em JAWS para existir. Usuários podem mudar o código eles usam mas não podem criar novo. Há vários destes eventos de sistemas específicos que podem ativar uma função. Quando estes eventos acontecem, eles freqüentemente passe parâmetros às funções usadas pelo código da função de evento. Aqui é um exemplo deste tipo de função, O AutoStartEvent que você achará em a maioria, arquivos de script. Função AutoStartEvent () Se (GetWindowName (GetFocus ()) == wn292) && SDMGetFocus (GetFocus ()) == 18 Então; em caixa de cheque SDMSayControl (GetFocus (), 17); say a gorjeta do dia SDMSayControl (GetFocus (), 18); say caixa de cheque EndIf; gorjeta do dia Se (WinWordFirstTime == 0) Então deixe WinWordFirstTime = 1 deixe GlobalWinwordVersion = FALSO se GetVerbosity () == o novato Então Say (msg293, OT_MESSAGE); "Use Insira mais a carta H para ajuda em várias "caixas de diálogo EndIf; o novato de verbosidade EndIf; primeiro tempo EndFunction O AutoStartEvent acontece sempre que umas cargas de arquivo de script. Este aqui é de um das versões do Microsoft Word script arquivo. Fala a gorjeta do dia, se é visível, jogos para cima alguns variáveis, e então fala uma mensagem de ajuda de JAWS. Também confere para ver se esta é na primeira vez que o AutoStartEvent correu durante o sessão de JAWS atual. Nesse caso, muda o valor da variável de WinWordFirstTime de 0 a 1. Então, o da próxima vez AutoStartEvent corre, saltará a ajuda mensagem. Esta é uma técnica útil que pode ser imitada sempre que você quer um script para fazer algo na primeira vez umas cargas de aplicação mas não em cargas subseqüentes. Se você quer algo que acontecer uma aplicação toda vez carrega, há pouco ponha o código na função de AutoStartEvent sem qualquer declarações cercar condicional isto. Esta função não adquire nenhum parâmetro ou devolve qualquer valor. Agora, deixa olhar a uma função mais complexa que adquire parâmetros passada a isto. Este é o NewTextEvent função que controla todo o texto recentemente escrita à tela. Função nula NewTextEvent (hwnd de manivela, pára-choque de fio, nAttributes de Int, NTextColor de Int, nBackgroundColor de Int, nEcho de Int, sFrameName de fio) ; Controla tudo escritos texto recentemente. Se o texto é contido dentro um ; armação, então o nome de armação é passado como um parâmetro se (ProcessSelectText(nAttributes, pára-choque)) então retorno EndIf se (sFrameName == "") então ; este texto não é associado com uma armação se (nAttributes & ATTRIB_HIGHLIGHT) então SayHighlightedText(hwnd, pára-choque) outro SayNonHighlightedText(hwnd, pára-choque) EndIf outro ; este texto é associado com uma armação se (nEcho == ECHO_NONE) então retorno; armação está sendo silenciada EndIf se (nEcho == ECHO_ALL || (nAttributes & ATTRIB_HIGHLIGHT)) então ; se é fixado eco de Armação a tudo ou o texto que é escrito é realçado Say(buffer, OT_BUFFER) EndIf EndIf EndFunction Isto é o NewTextEvent funcionam de uma versão do arquivo de script de falta. Nota que nós podemos contar que esta função não tem nenhum lucro porque a palavra Nulo é ao começando da função começam declaração. São declarados todos os parâmetros para este evento entre a esquerda e parênteses de direito na função comece declaração. (Se lembra que parâmetros como estes estão originalmente definidos na tab de parâmetros do Diálogo de script Novo que é usado definir e documentar um script novo ou função.) Quando chamadas de JAWS esta função de evento, passa um valor automaticamente por cada dos parâmetros prescritos entre os parênteses da função chame declaração. O usuário pode não somar parâmetros para ou pode remover parâmetros desses que foram predefined para cada função de evento. Porém, desde valores para cada um destes parâmetros é passado quando a função é chamada, o usuário pode usar os dados providos por qualquer deles enquanto personalizando a função de evento. O seguinte descreve cada dos parâmetros para NewTextEvent. Hwnd de manivela é a manivela de janela da janela que adquire o texto. Pára-choque de fio é o texto atual que é escrito à janela. NAttributes de Int é o atributo do texto que é escrito. NTextColor de Int é a cor do texto que é escrito. NBackgroundColor de Int é a cor de fundo do texto que é escrito. NEcho de Int é o nível de jogo de eco para a armação, se qualquer, isso está adquirindo o texto. SFrameName de fio é o nome da armação, se qualquer, isso está adquirindo o texto. Como dissemos mais cedo nós, esta função é chamada automaticamente toda vez texto novo é escrito à tela. JAWS passam os valores destes sete parâmetros automaticamente para a função quando é chamado. Usando lógica e executando comparações nestes dados, pode determinar a função que tipo de texto foi escrito, se ou não é associado com uma armação, e isso que, se qualquer coisa, JAWS deveriam dizer. Se esta não fosse uma função de evento, o usuário teria que chamar isto outro de dentro função ou script e vai, naquela chamada de função, tenha que especificar as variáveis que são usadas para passar a informação exigida. Porque esta é uma função de evento, JAWS fazem aquele trtablho automaticamente sempre que texto novo é escrito. Vale a pena para estudar esta função de evento para aprender como JAWS fazem estes tipos de comparações e como são chamadas funções dentro de outras funções. A primeira linha depois dos comentários iniciais na função é como segue: se (ProcessSelectText(nAttributes, pára-choque)) então Esta linha é uma declaração Se-de então que chama uma função nomeada ProcessSelectText. Esta função é envolvida em texto que fala como é selecionado e unselected. A sintaxe desta declaração é exatamente igual a se tivesse sido escrito: se (ProcessSelectText(nAttributes, pára-choque) == Verdadeiro) então A parte que diz "== verdadeiro" sempre é incluído se é omitido. Assim se estes lucros de chamada de função um valor de verdadeiro, então a próxima linha, Devolva, será executado. O que está acontecendo aqui é que o NewTextEvent funcionam mãos fora a tarefa de determinar se o texto está sendo selecionado ou unselected para o ProcessSelectText função. Se esta função decide que o texto está sendo selecionado ou unselected, faz a oração necessária, e não é necessário para o NewTextEvent para faça qualquer coisa mais adiante. Assim, quando é devolvido controle à função de NewTextEvent com um retorno de verdadeiro, a função de NewTextEvent terminará então por seu próprio devolva declaração, e o trtablho está completo. Se o ProcessSelectText funcionam devolve falso, então o texto não está sendo selecionado ou unselected, a declaração Se-de então, é falso, e a função de NewTextEvent continuará. A próxima linha nesta função é: se (sFrameName == "") então Considerando que o sFrameName de parâmetro passa o nome de qualquer armação que contém texto recentemente-escrito à função de NewTextEvent, este parâmetro terá só um nulo ou vazio valor se o texto não é associado com uma armação. Um valor nulo para o nome de armação é indicado pelos dois aspa sem texto entre eles. Assim, se lá é nenhuma armação associada com o texto, haverá nenhum nome de armação, um valor nulo, e a declaração Se-de então serão verdades. Então a próxima declaração na sucessão será executado. Se a declaração Se-de então for falsa, enquanto realmente significando há uma armação, então execução pulará para dentro a um ponto diferente do script que controla texto armação-associado. Não assumindo nenhuma armação, as próximas declarações a ser processadas são: se (nAttributes & ATTRIB_HIGHLIGHT) então SayHighlightedText(hwnd, pára-choque) A primeira destas duas linhas é Se-então o bitwise famoso declaração que nós falamos aproximadamente na seção em operadores de bitwise. Se esta declaração é achada para ser verdade, nós sabemos o texto é realçado, e processando é se passado para a próxima linha que é uma chamada de função à função de SayHighlightedText. Esta função controla a oração de tudo recentemente-realçou texto. Se o bitwise Se-então declaração é falsa, a função de SayHighlightedText não é chamada, e, ao invés, as próximas linhas é executado. Estes são como segue: outro SayNonHighlightedText(hwnd, pára-choque) Em outro palavra, se o texto é realçado, chame a função de SayHighlightedText. Outro, chame a função de SayNonHighlightedText. Você provavelmente já tem figurado fora que a função de SayNonHighlightedText é chamada para controlar a oração de texto non-realçado. Assim o que acontece se o script tivesse decidido cedo em que o texto novo, realmente, foi associado com uma armação? Naquele caso, teriam saltado os função processando até a linha seguinte: se (nEcho == ECHO_NONE) então Esta linha compara o valor do nEcho de parâmetro com o ECHO_NONE constante. Se eles são achados para ser igual, isto significa que o eco de armação não é fixado a nenhum, e nada deveria ser falado. Naquele caso, é executado um retorno simples, nada é falado, e nós somos terminados. Se esta declaração Se-de então devolver falso, o eco não é não fixe a nenhum, e mais trtablho precisa ser feito. Então a próxima linha a ser processada é: se (nEcho == ECHO_ALL || (nAttributes & ATTRIB_HIGHLIGHT)) então A primeira parte desta declaração Se-de então pergunta se nEcho for igual a ECHO_ALL. Em outro palavra, é fixado eco de armação para ecoar todo o texto? A segunda parte do Se-então declaração é nossa operação de bitwise velha, familiar que determina se o texto é realçado. Se qualquer um destas voltas de declarações fora ser verdade, (se lembre disso o || o operador é um ou declaração), então a próxima linha da função é executada. Esta linha é como segue: Say (pára-choque, OT_BUFFER) Esta declaração diz os conteúdos da variável mais amarela que é o texto que foi escrito à tela simplesmente. Se a armação não é fixada para ecoar tudo ou o texto não é realçado, a função terminará sem ter falado qualquer coisa nada. Emocione, isso que um trtablho complicado! Tudo deste processo são automaticamente terminados através de JAWS na piscadela de um olho, toda vez texto novo é escrito à tela. Isto é um exemplo perfeito de como JAWS estão monitorando continuamente a tela escreve e decidindo o que você precisa ouvir. Esta função encarna muitos dos aspectos do Idioma de script de JAWS sobre o qual nós temos falado, e você deveria estudar isto até que você entende isto completamente. Quando você fizer, você será bem a caminho de um entendendo detalhado de como o idioma de script trtablha e como criar seus próprios scripts avançados. 7.5.4.1 lista de Funções de Evento O seguinte é uma lista das funções especiais ativada por eventos de sistemas. Se você desejar usar estas funções seu script escrevendo, Você tem que usar o nome exatamente como listado aqui e nomeia todos os parâmetros prescritos na chamada de função na ordem prescrita. Para informação mais detalhada sobre quaisquer destes funções de evento, veja a documentação de script para cada um chamando o diálogo de documentação de script no arquivo de script de falta. Note que esta lista foi atualizada para incluir evento funciona de JAWS 3.7. Se você estiver usando uma versão mais cedo, você não terá tudo dos artigos mostrados tabixo. ActiveItemChangedEvent - Ativou quando o elemento ativo em umas mudanças de objeto. Parâmetros: Uma manivela que contém a manivela da janela em qual o objeto ativo ou a criança mudou. Uma inteireza que contém o ID do objeto atual. Uma inteireza que contém o ID da criança de objeto atual, como o artigo novo em uma lista ou controle de árvore. Uma manivela que contém a manivela da janela prévia na qual o objeto mudou. Uma inteireza que contém o ID do objeto prévio. Uma Inteireza que contém o ID da criança de objeto prévia, como um artigo em uma lista ou controle de árvore. AppWillNotSpeakEvent - Esta função de evento só é usada durante instalação de JAWS e não é significada para scripting de propósito geral. AutoStartEvent - Corre quando o arquivo de script que contém esta função carregar ou adquire foco. Parâmetros: Nenhum AutoFinishEvent - Corre quando o arquivo de script que contém esta função estiver fechado ou perde foco. Parâmetros: Nenhum BottomEdgeEvent - Corre quando o cursor ativo encontrar a extremidade de fundo da janela. Parâmetros: Uma manivela que contém a manivela de janela da janela cuja extremidade é alcançada. TopEdgeEvent - Corre quando o cursor ativo encontrar a extremidade de topo da janela. Parâmetros: Uma manivela que contém a manivela de janela da janela cuja extremidade é alcançada. ClipboardChangedEvent - Este evento é chamado sempre que o conteúdo do clipboard é substituído. Parâmetros Nenhum CursorShapeChangedEvent - Este evento acontece quando as rato ponteiro forma mudanças. Parâmetros: Um fio que contém o tipo de cursor atual. DocumentLoadedEvent - Executa um SayAll quando uma página de teia nova ou documento de html está carregado e o cursor virtual é ativo. Parâmetros: Nenhum FocusChangedEvent - Corre quando as mudanças de foco visuais. Parâmetros: Uma manivela que contém a manivela de janela da janela atual. Uma manivela que contém a manivela de janela da janela anterior. FocusPointMovedEvent - Chamou sempre que o cursor de PC move a um local diferente na tela. Parâmetros: Uma inteireza que especifica a posição horizontal atual do cursor de PC. Uma inteireza que especifica a posição vertical atual do cursor de PC. Uma inteireza que especifica a posição horizontal prévia do cursor de PC. Uma inteireza que especifica a posição vertical prévia do cursor de PC. Uma inteireza que contém a unidade de movimento como definido em HJConst.jsh. Uma inteireza que especifica a direção de movimento como definido em HJConst.jsh. Uma inteireza que contém a quantia de tempo que decorreu desde então o movimento aconteceu. ForegroundWindowChangedEvent - Este evento é ativado toda vez uma real janela adquire o foco. Parâmetros Uma manivela que contém a manivela de janela da real janela com foco. FormsModeEvent - Corre quando forma modo é virado em ou fora. Parâmetros: Uma inteireza que contém o em ou fora estado de modo de formas. ItemNotFoundEvent - Corre quando um artigo pedido não é achado no modelo de fora-tela. Parâmetros: Uma inteireza que contém a manivela de janela da janela atual. KeyPressedEvent - ativou por qualquer batida de tecla presa a um script antes daquele script seja corrido. Parâmetros: Uma inteireza que contém o código fundamental numérico. Um fio que contém o nome fundamental como se apareceria em um mapa fundamental. Uma inteireza que define se a chave é prendida a uma exibição de Braile. Uma inteireza que define se a chave é prendida a um script. MenuModeEvent - Corre quando o foco entrar em um cardápio. Parâmetros: Uma manivela que contém a manivela de janela da janela atual. Uma inteireza que contém o modo de cardápio. MouseMovedEvent - Ativou quando o rato é movido. Parâmetros: Uma inteireza que especifica a coordenada de X. Uma inteireza que especifica a coordenada de Y. NewTextEvent - Corre quando texto novo é escrito em qualquer lugar na tela. Parâmetros: Uma manivela que contém a manivela de janela da janela atual. Um fio que contém o texto escrito. Uma inteireza que contém o atributo do texto. Uma inteireza que contém a cor de texto. Uma inteireza que contém a cor de fundo. Uma inteireza que contém a colocação de eco. Um fio que contém o nome de armação da armação onde texto é escrito. SayAllStoppedEvent - Este evento é ativado quando SayAll é terminado. Parâmetros Nenhum TextSelectedEvent - Corre quando texto é selecionado ou unselected em modo virtual. Parâmetros: Um fio que contém o texto que está sendo selecionado ou unselected. Uma inteireza que descreve se o texto está sendo selecionado ou unselected. TooltipEvent - Este evento é chamado se a opção de jcf OPT_PROCESSTOOLTIPEVENT é fixado a um ou em. Também é chamado pelo labeler de autographics. Este evento corre cada tempo se aparece uma gorjeta de ferramenta. É atualmente só usado para armazenar o texto da última gorjeta de ferramenta no fio global strLastTooltip variável. Parâmetros: Uma manivela que contém a manivela de janela da gorjeta de ferramenta. Um fio que contém o texto de gorjeta de ferramenta. ValueChangedEvent - Esta função é ativada quando uma mudança de valor de um objeto de MSAA acontecer. A bandeira de MSAA deve ser virada em em seu jcf aplicação-específico arquive para habilitar esta função. Parâmetros: Uma manivela que contém a manivela da janela na qual o valor de objeto mudou. Uma inteireza que contém o ID do objeto cujo valor mudou. Uma inteireza que contém o ID da criança de objeto cujo valor mudou. Uma inteireza que contém o typecode de objeto para o objeto cujo valor mudou. Um fio que contém o nome do objeto cujo valor mudou. Um fio que contém o valor do objeto cujo valor mudou. WindowCreatedEvent - Corre quando uma janela nova se aparecer. Parâmetros: Uma manivela que contém a manivela de janela da janela nova. Uma inteireza que contém a coordenada do lado esquerdo da janela. Uma inteireza que contém a coordenada do topo da janela. Uma inteireza que contém a coordenada do lado certo da janela. Uma inteireza que contém a coordenada do fundo da janela. WindowDestroyedEvent - Corre quando uma janela desaparecer. Parâmetros: Uma manivela que contém a manivela de janela da janela que é destruída. WindowMinMaxEvent - Ativou quando o estado de Minimize/Maximize de umas mudanças de janela. Parâmetros: Uma manivela que contém a manivela de janela da janela. Uma inteireza que descreve a ação geral que acontece na janela. Uma inteireza que descreve a ação específica que acontece na janela. WindowResizedEvent - Ativou quando uma janela está a ponto de ser resized. Parâmetros: Uma manivela que contém a manivela da janela que é resized. Uma inteireza que contém a extremidade esquerda da janela que é resized. Uma inteireza que contém a extremidade de topo da janela que é resized. Uma inteireza que contém o lado certo da janela que é resized. Uma inteireza que contém a extremidade de fundo da janela que é resized. As funções de evento seguintes especificamente pertencem a Magia: ActiveItemChangedMagEvent - Esta função de evento é chamada quando as mudanças de artigo selecionadas em uma visão de lista ou uma visão de árvore controlem todas as funções específicas Mágicas que tem que acontecer quando as mudanças de artigo selecionadas. Parâmetros: Nenhum FocusChangedMagEvent - Esta função é ativada quando foco move de um controle a outro. Parâmetros: Uma manivela para a janela que tem o foco. Uma manivela para a janela prévia que teve o foco. FocusPointMovedMagEvent - Esta função é chamada por FocusPointMovedEvent para controlar todas as funções específicas Mágicas que têm que acontecer quando os movimentos de ponto de foco. Parâmetros: Uma inteireza que contém o X coordena do cursor depois da mudança em ponto de foco. Uma inteireza que contém o Y coordena do cursor depois da mudança em ponto de foco. Uma inteireza que contém o X coordena do cursor antes da mudança em ponto de foco. Uma inteireza que contém o Y coordena do cursor antes da mudança em ponto de foco. Uma inteireza que contém a unidade de movimento como definido em HJConst.JSH. Uma inteireza que contém a direção de movimento como definido em HJConst.JSH. Uma inteireza que contém a quantia de tempo que decorreu o movimento desde então aconteceu. MenuModeMagEvent - Este evento é ativado quando o estado de umas mudanças de cardápio. Parâmetros: Uma manivela que contém a manivela do cardápio. Uma inteireza que contém o modo do cardápio que mudou. NewTextMagEvent - UMA Função para executar processo que é específico a Magia que Localiza quando texto novo é escrito à tela. Parâmetros: Uma manivela que contém a manivela de janela da janela atual. Um fio que contém o texto escrito. Uma inteireza que contém o atributo do texto. Uma inteireza que contém a cor de texto. Uma inteireza que contém a cor de fundo. Uma inteireza que contém a colocação de eco. Um fio que contém o nome de armação da armação onde texto é escrito. ScreenMagnifiedEvent - Uma função de evento que corre ampliação toda vez é ativada, desativou, ou a ampliação nivela mudanças. Parâmetros: Uma inteireza que indica se ou não ampliação é acesa. Uma inteireza que indica o nível de ampliação. 8 script que Escreve Técnicas 8.1 que exploram a Aplicação Com as Funções de Utilidade Antes de nós escrevermos um arquivo de script, nós temos que ter alguma idéia do que nós queremos realizar com isto. Nós precisamos também freqüentemente explorar as janelas em nossa aplicação achar fora que tipos de coisas está presente e como eles deveriam ser falados. Nós também podemos precisar ter detalhado informação sobre as janelas como classe, controle ID, e manivela como também relações de pai-criança. Há um jogo de scripts no arquivo de script de falta chamado os Scripts de Utilidade que podem ser de algum benefício aqui. Estas utilidades ajudam na escritura de scripts permitindo o usuário para explorar o interrelationships de pai-criança das várias janelas na aplicação e por informação detalhada apresentando sobre cada janela como classe, controle ID, etc. Cada uma das utilidades é descrito tabixo junto com sua batida de tecla nomeada. Tudo destas utilidades é usado no modo de Fila de Casa (INSERT+SPACEBAR). O modo de Fila de Casa é um estado trocado do teclado, um pouco análogo aos estados trocados obtido com o Capslock e chaves de numlock. Isto significa que você acessa cada função usando a batida de tecla indicada depois que você virasse o modo de fila de casa em por simultaneamente INSERT+SPACEBAR urgente. Deixar este modo, imprensa INSERT+SPACEBAR uma segunda vez. Foram atualizadas as funções de utilidade descritas tabixo para conter informação sobre as capacidades novas somou em JAWS 3.7. Esses que usam versões mais velhas de JAWS não terá tudo das batidas de tecla descritas nesta seção. Além disso, uma característica nova das funções de fila de casa foi somada em JAWS 3.7. O usuário ouvirá um anúncio falado quando entrando e deixando a árvore de janela para o atualmente aplicação ativa. Desde que é possível navegar a criança e janelas de pai não só da aplicação ativa mas de outras aplicações, JAWS alertarão o usuário quando navegação em e fora da aplicação ativa acontece. * INSERT+H - Esta é a ajuda fundamental quente e lista tudo das utilidades junto com as batidas de tecla deles/delas. * F1 - Esta chave é usada para falar informação sobre a janela atual ou controle. Que informação é falada depende do modo de produção que você selecionou. Isto Modo de produção está definido usando o F3 tecle (veja tabixo). A chave de F3 está como um interruptor de seletor que determina que dados adquirirá você, e a chave de F1 na verdade dá você os dados. Quando F1 é apertado duas vezes em sucessão rápida, a informação pedida é soletrada. Modo de feitiço não aplica a inteirezas. * INSERT+F1 - Esta chave posta a informação pedida por F1 ao Modo de Produção selecionado para uma caixa de mensagem. Isto não está disponível em Modos de Produção que devolvem inteirezas. * CTRL+F1 - Esta chave posta a informação pedida por F1 ao modo de produção selecionado para o clipboard. * F3 - Esta chave fixa o Modo de Produção que será falado por F1. Quando F3 é apertado repetidamente, o Modo de Produção é cycled na ordem seguinte: SayTypeAndText, foco de janela ou controla, controle ID, classe de janela, tipo de janela, e primeiro real nome de janela. Isto significa que este é o dados que você ouvirá quando você apertar o F1 chave. * SHIFT+F3 - Estes ciclos fundamentais pelas mesmas colocações como F3, mas em ordem inversa. * INSERT+NUM BLOCO CASA - Esta chave fixa o modo de produção atrás a SayTypeAndText e pode ser usada para voltar a esta colocação em vez de toggling por tudo dos modos. * TAB - Esta chave move o Cursor de JAWS à próxima janela do mesmo nível lógico como o um você é atualmente em e fala a informação exigida conforme ao Modo de Produção você fixou com F3. * SHIFT+TAB - Esta chave move o Cursor de JAWS à janela anterior do mesmo nível lógico como o um você é atualmente em na lista de tab e fala o exigido informação de acordo com o Modo de Produção você fixou com F3. * F2 - Esta chave move o Cursor de JAWS à primeira criança da janela atual e fala a informação exigida de acordo com o Modo de Produção com o que você fixou F3. * SHIFT+F2 - Move o Cursor de JAWS ao Pai da janela atual e fala a informação exigida de acordo com o Modo de Produção que você fixou com F3. * F4 - Esta chave é um seletor que fixa o Modo de procura de Atributo. O modo de procura de atributo é o estilo de atributo que será procurado por usar os quatro quente chaves descreveram tabixo. Quando repetidamente F4 urgente, os atributos são cycled na ordem seguinte: tipo negrito, itálico, sublinha, realce, e strikeout. * ACENTO GRAVE - Esta chave move o Cursor de JAWS ao próximo atributo pedido. Modos de procura de atributo são usando definidos o F4 teclam como descrito acima. * SHIFT+GRAVE ACCENT - Esta chave move o Cursor de JAWS ao prior pediu atributo. Modos de procura de atributo são usando definidos o F4 teclam como descrito acima. * CTRL+GRAVE ACCENT - Esta chave move o Cursor de JAWS ao primeiro atributo pedido. Modos de procura de atributo são usando definidos o F4 teclam como descrito acima. * SHIFT+CTRL+GRAVE ACCENT - Esta chave move o Cursor de JAWS ao último atributo pedido. Modos de procura de atributo são usando definidos o F4 teclam como descrito acima. * F5 - Esta chave dirige o foco de casa-fila à janela atualmente-ativa. * F6 - Estes pinos de madeira fundamentais o anúncio automático de visibilidade de janela. Quando virou em, esta característica falará automaticamente para o usuário se a janela nova há pouco movido para com outras chaves de utilidade é visível ou não. * F7 - Esta chave anuncia atualmente para o estado de visibilidade da janela referenced pela fila de casa. * F8 - Esta chave lerá os conteúdos inteiros do referenced de janela pela fila de casa. * F9 - Esta chave é semelhante a F1 a não ser que em vez de devolver informação aproximadamente o atualmente-referenced janela, devolve informação sobre o objeto que atualmente tem o foco do PC ou cursor de JAWS. * INSERT+F9 - Esta chave posta a informação pedida por F9 ao Modo de Produção selecionado para uma caixa de mensagem. * CTRL+F9 - Esta chave posta a informação pedida por F9 ao modo de produção selecionado para o clipboard. * F10 - Esta chave fixa o Modo de Produção que será falado por F9. Quando F10 é apertado repetidamente, o Modo de Produção é cycled na ordem seguinte: Nomeie, Digite, e Subtipo. Isto significa que este é o dados que você ouvirá quando você apertar a chave de F9. * SHIFT+F10 - Estes ciclos fundamentais pelas mesmas colocações como F10, mas em ordem inversa. * F11 - Esta chave fala a colocação atual para a chave de F3. Isto permite o usuário para conferir a colocação sem mudar isto de fato usando F3. * F12 - Esta chave fala a colocação atual para a chave de F10. Isto permite o usuário para conferir a colocação sem mudar isto de fato usando F10. * INSERT+7 - Esta chave abre a classe de janela designe novamente diálogo e lugares atualmente dentro disto a classe para a janela referenced pela casa remam utilidades. Isto comportamento é idêntico a isso obtido por INSERT+7 sem fila de casa virada em, mas quando fila de casa é em, a classe de janela exibiu dentro o designe novamente diálogo é o um referenced pela casa remam em lugar de há pouco a classe de janela ao cursor ativo. Usando estas ajudas de utilidades você adquirir todas as informações você precisam sobre controles, relações de parent/child, e texto atribui para usar em seus próprios scripts. Lição de casa #7 Abra a aplicação de WordPad. Então, vire no modo de Fila de Casa. Use F3 e F1 para obter tudo da informação sobre os parâmetros do principal edite janela e o filename editam campo do Diálogo Aberto. As respostas podem ser achadas em Apêndice o A. (Veja Capítulo 14.6.) 8.2 Informações de Janela de obtenção Com o script de ScreenSensitiveHelpTechnical Se você precisar de um estágio de leitura rápido no Controle de uma janela ID, Classe, ou Manivela, isto é obtido facilmente por um script chamado ScreenSensitiveHelpTechnical no script de falta arquivo. Este script pode ser acessado com a CTRL+INSERT+F1 chave combinação e falará o Controle ID, Classe, e Manivela da janela que contém seu ativo cursor. Este é um modo rápido de adquirir esta informação se você não precisar tudo dos outros dados providos pelos Scripts de Utilidade. 8.3 Tipos de Arquivo de script Como foi discutido mais cedo, há vários tipos de arquivos associados com escritura de script. Você pode contar o que o tipo de arquivo está por sua extensão. . JSS - arquivos de script de Fonte . JSH - Cabeçalho arquiva (incluiu em arquivos de JSS) . JSM - Mensagem arquiva (incluiu em arquivos de JSS) . JSB - Compilou arquivos de script . JKM - arquivos de mapa Fundamentais que contêm as batidas de tecla nomearam a vários scripts. . JSD - documentação de script arquiva que contém os nomes de script com as sinopses associadas deles/delas e descrições. 8.3.1 fonte Arquiva Código de fonte para arquivos de script é mesmo livre-forma. Você pode colocar espaços ou linhas em branco das que você gosta em qualquer lugar. Capitalização não é requerida e é ignorada pelo compilador com exceção de certas funções de comparação de fio como StringContains (). Tendo dito que há várias considerações formatando. Enquanto seu código pode seja muito fácil para você entender, outros podem não poder fazer sentido disto porque eles não sabem o que está em sua mente, e eles podem não organizar o trtablho deles/delas da mesma maneira. Então, nós gostaríamos de sugestionar alguns regras de dedo polegar que fará isto mais fácil para outros entenderem seu código e o ajudará a entender scripts escritos por outros. 1. Scripts individuais sempre deveriam ser separados por uma linha em branco. 2. Recue qualquer seção de código para o que é servil aquele anterior e debaixo disto. Isto ajuda o usuário para ordenar fora a lógica do script. Considere o script seguinte: script CheckVerbosity () Se GetVerbosity () == o NOVATO Então SayMessage (OT_JAWS_MESSAGE, "Começando verbosidade é ativo." ) Outro SayMessage (OT_JAWS_MESSAGE, "Começando verbosidade não é ativo." ) EndIf EndScript Note que Se, Outro e EndIf são tudo ao mesmo recue nível e as declarações dentro de cada seção é mais longe encomendado. Quanto você recua está até você, mas nós sugestionamos aproximadamente cinco caráter. Abas usando para fazer recuam trtablha melhor que espaços porque recua será até mesmo consistente se você estiver trtablhando dentro um proporcional fonte. 3. Cada função deveria estar em uma linha separada. 4. Aqui são alguns sugestões de capitalização: A. Begin cada declaração com uma carta capitalizada. B. Muitas JAWS nomes de função standards são a combinação de dois ou mais palavras que descrevem a função. O primeiro caráter de cada palavra em um nome de função é capitalizado. No exemplo prévio, nós usamos GetVerbosity. Isto ajuda os ter falado corretamente. Quando você criar variáveis e funções, você deveria usar a mesma convenção. 5. A estrutura do arquivo de script também é importante. Começo de A. cada arquivo com um comentário que descreve o que o arquivo contém e como é pretendido que é usado. Liste qualquer informação específica que alguém lendo isto arquivo precisa saber. Você também poderia incluir uma lista de variáveis e como cada é usado. Também é importante para incluir a data e natureza de qualquer mudança e melhorias isso foi feito desde que o arquivo foi escrito primeiro. Agora alguém pode ler as primeiras linhas de seu arquivo e pode conhecer em toda parte isto. B. A próxima seção deveria ser qualquer inclua declarações. Lugar de C. qualquer declaração variável global na próxima seção. Lugar de D. qualquer declaração constante na próxima seção. E. O próximo artigo em seu arquivo de script deveria ser o AutoStartEvent funcionam se você pretender usar um. Qualquer código associado automaticamente com esta função corre quando seu arquivo de script está carregado. Esta função usa fala qualquer mensagem introdutória normalmente ou inicializa qualquer variável global a valores diferente de zero. Para exemplo, no arquivo de script de falta, as JAWS começam para cima mensagens aproximadamente como acessar ajuda está nesta função. F. que Seu próximo script deveria ser a pessoa intitulou ScriptFileName, o script prendeu à batida de tecla de INSERT+Q. Este script anunciará o nome do atualmente ativo arquivo de script e aplicação. Você pode achar um exemplo de como este script deveria ser formulado olhando em DEFAULT.JSS. Você deveria substituir o nome de seu aplicação para os dados que são passados à função de ScriptAndAppNames. G. Next vem os scripts e funções usuário-definidas. Tente escolher uma ordem lógica de forma que qualquer um lendo do princípio ao fim seu arquivo de script poderá fazer sentido de isto. Por exemplo, se você tem um script que executará uma ação e outro para executar a ação oposta, os coloque um depois o outro. Coloque cada função sobre o primeiro script ou outra função que chamam isto. Não fazendo isto poderiam resultar em uma condição de erro. 1. Comentários de uso, comentários, e mais comentários! Comentários provêem um mapa de estrada para qualquer um tentando trtablhar com seu código. Coloque uma linha de comentário logo após o script comece linha de cada script ou Função que descrevem o propósito do script ou função. Coloque um comentário no código que descreve qualquer declaração complexa que pode não seja intuitivo. Pense em termos de alguém tentar revisar seu código e sempre lhes dar a ajuda eles precisam. Você estará se ajudando até mesmo como você pode esquecer o propósito de uma seção particular. 8.3.2 Arquivos compilados Quando você terminou escritura seu código, deve ser compilado para uso pelo programa de JAWS. Seu arquivo será dado o mesmo nome como a aplicação junto com um . Extensão de JSB quando você compila isto assim o programa de JAWS saberá quando carregar isto. O processo de compilação é executado automaticamente pelo Gerente de script quando você escolhe Economize do cardápio de arquivo. A fonte ou arquivo de JSS é economizado, e ao mesmo tempo, um arquivo de JSB compilado é criado e é economizado. Esta compilação inclui todo o cabeçalho e arquivos de mensagem que foram incluídos pelas declarações apropriadas no começo do arquivo de JSS. 8.3.3 incluem Arquivos Como nós mencionamos antes, o compilador de script de JAWS provê para incluir outros arquivos em nosso script arquive a compile tempo. Uma vez a compilação está completa, tudo nos arquivos incluídos faz parte do arquivo de JSB e está disponível sempre que o arquivo de script é ativo. Há dois tipos de inclua arquivos: * Arquivos de cabeçalho são designados pela extensão JSH e contêm declarações variáveis ou constantes. * São designados Arquivos de mensagem com a extensão JSM e contêm declarações de mensagem com os números nomeados deles/delas. Sempre se agrupe seu inclua declarações junto perto do começo de seu arquivo de script. Variáveis globais pondo e constantes em um cabeçalho separado arquivam e mensagens em um arquivo de mensagem separado ajudam organizar melhor seu trtablho. São providos dois arquivos com JAWS que contêm tudo das variáveis globais standards e constantes. Estes são HJGLOBAL.JSH e HJCONST.JSH. Eles são providos deste modo de forma que fomentador de script pode usar quaisquer das variáveis standards e constantes simplesmente por inclusive eles nos próprios arquivos de script deles/delas. Arquivos de mensagem também são fixos para cima como inclui. O padrão a pessoa é DEFAULT.JSM. Não é necessário usar um arquivo de mensagem para seu arquivo de script. Henter-Joyce colocou as mensagens de falta em um arquivo separado para tradução mais simples para outros idiomas. Se você usar um arquivo de mensagem, deveria ser nomeado igual a seu arquivo de script de forma que você pode identificar isto facilmente. 8.4 Variáveis usando Nossa seção mais cedo em variáveis (Veja Capítulo 7.3.3.) mostrou para você que tipo de variáveis permite o idioma de JAWS e como os declarar. Nesta seção vamos nós discuta quando os usar, sugestione alguns nomeando convenções e lhe mostre onde os colocar em seus arquivos de script. 8.4.1 Convenções nomeando Este é um assunto sensível. Todo o mundo tem uma opinião, e estas opiniões conflitam freqüentemente. Embora isso que nomeando convenção você escolhe, enquanto usando a pessoa ajudarão previna tempo consumindo e envergonhando enganos. Adotando padrões e aderindo a eles, está garantindo você que você pode voltar depois a este código e pode modificar ou depure com facilidade. Nós na comunidade de inaptidão passamos muito tempo que fala sobre adotar padrões. Aqui é sua chance contribuir. Vamos em cima de alguns sugestões em criar seu padrão. Qual está em um nome? Pode ser muito. Escolhendo um nome descritivo faz sentido muito. A coisa mais fácil para fazer é nomear sua variável reunindo palavras descritivas. Tente não fazer isto muito longo como você tenha que digitar os nomes, às vezes muito. Se você estiver nomeando uma variável global, faça seu nome começa com G_ ou Global. Você também deveria capitalizar o começo de cada palavra como você os une assim JAWS podem ler as palavras corretamente, enquanto o assumindo tenha o Caso Misturado que opção virou em no Gerente de Configuração. Você poderia levar este adicional e usa Int, Str, Obj, e Hnd dentro dos nomes indicar inteireza, fio, objeto, e variáveis de manivela. Assim, G_Int_VariableName seria uma variável de inteireza global e Str_VariableName seria uma variável de fio local. 8.4.2 Colocação de declaração Deveriam ser declaradas variáveis globais que serão usadas em mais de um script em seu arquivo perto do começo do arquivo, corrija depois o inclua declarações. Você indique o começo da seção de declaração variável global colocando a palavra "Globals" em sua própria linha. Então você coloca cada declaração em uma linha separada. Coloque uma vírgula imediatamente depois de cada nome variável, com exceção do último na lista. Enquanto você está a isto some um comentário ao término do declaração declarar como esta variável é usada. Mais tarde você pode recorrer a esta área do arquivo para informação sobre qualquer variável que você encontra. O único tempo você declararia uma variável dentro de um script é se for uma variável local. Revocação que uma variável local só é usada dentro do script onde é definiu considerando que uma lata variável global seja usada dentro de qualquer script no arquivo. Uma variável local deveria ser declarada imediatamente na primeira linha do script depois o script começa declaração. 8.4.3 Variáveis Globais usando Se lembre que variáveis que você pretende usar em mais de um script são declaradas como global. Além das variáveis globais para as quais você define seu próprio use, há um jogo de JAWS standards variáveis globais que são muito útil para a criação de scripts. Estas variáveis são contidas no arquivo HJGLOBAL.JSH, e você pode os usar colocando um inclua declaração para este arquivo no começo de seu próprio arquivo de script. Gaste um pequeno andamento de tempo em cima das variáveis globais definidas em HJGLOBAL.JSH como eles são muito usados nos scripts de falta. Há descrições de como cada é usado. Se lembre os valores contidos nestes variáveis são freqüentemente modificado pelos scripts de falta. Então, se você inclui HJGLOBAL.JSH em seu script arquive, você pode chamar estas variáveis para adquirir informações específicas como precisado. Por exemplo, conferindo os conteúdos de GlobalMenuMode lhe falarão se você estiver na barra de cardápio ou em um cardápio. O que nós estamos dizendo que aqui é que este HJGLOBAL.JSH variáveis globais constantemente são usadas pelos scripts de falta em JAWS, e se você os entende e aprende como os usar e os incluir em sua própria aplicação script arquiva, você pode chamar os valores que eles contêm durante a execução de seus próprios scripts. Também vale que menciona que, uma vez você definiu e nomeou um valor a uma variável global em um de suas aplicações que é mantido valor em memória, até mesmo depois que você fim que aplicação. Se você reabrir a aplicação depois, as variáveis globais que você definiu ainda terão os valores deles/delas. O único modo que você pode verdadeiramente clareie estas variáveis globais está fechando e recarregando JAWS então. 8.5 Constantes usando Se lembre que uma constante é que há pouco um rótulo que representa um número ou um fio de cartas de forma que o código de script é mais fácil de ler e entender. Você deveria incluir as constantes standards arquivam, HJCONST.JSH, em cada um de seus arquivos de script e usa as constantes nisto sempre que você pode. As versões destes arquivos contiveram dentro o mais recentes liberações de JAWS contêm muitos, muitas categorias de constantes para uso em situações diferentes. Alguns destes são bastante especializados e de relevância mínima para a maioria dos usuários, assim nós concentraremos nas categorias mais importantes aqui. O arquivo contém os grupos importantes seguintes, asperamente na ordem eles se aparecem: * Constantes de clipboard - Estas constantes tudo começam com CLIPBOARD_ e são para uso com a função de ClipboardChangedEvent. * Constantes de teclado - Este todo o começo com Key_ e nomeia nomes facilmente-se lembrados a chaves de teclado. Eles são para uso com a função de KeyPressedEvent. * Códigos de Tipo de janela e Subtipo Codifica - Estes códigos traçam ao tipo de janela. Se lembre disso que o controle mais humilde é classificado como uma janela até mesmo. Então, Todo janela devolverá um código de tipo se examinou. O botão de empurrão devolverá um tipo de janela de 1 ou seu nome constante, WT_BUTTON. Há duas funções adquiriam esta informação, GetWindowTypeCode e GetWindowSubtypeCode. Considere a declaração Se-de então seguinte do script de SayPriorCharacter DE UMA VERSÃO DE DEFAULT.JSS. É o script que corre quando a chave de seta esquerda for empurrado. O outro perna disto Se declaração é corrida quando não há nenhum cursor de PC visível. Esta filial é projetada para conferir para ver se nós estivermos em um cardápio. Nós somamos comentários depois de cada seção de código que descreve seu propósito. Se CaretVisible () Então; É um cursor de PC visível SayCharacter (); Say o caráter no que nós pousamos Retorno; Deixe este script Outro; UM cursor de PC não é visível Deixe TheTypeCode = GetWindowSubtypeCode (GetCurrentWindow ()) ; Jogo uma variável de inteireza para o código de tipo de janela atual Se (TheTypeCode == WT_MENU) Então; É a janela atual um cardápio Say (msg3, OT_MESSAGE); "Cardápio" SayWindow (GetCurrentWindow (), READ_HIGHLIGHTED); Fale o artigo atual Retorno; Deixe este script EndIf EndIf O que está acontecendo aqui é que o script está decidindo o que falar dependendo do SubTypeCode da janela somos nós dentro. Deveria ser bem óbvio que isto fixou de constantes e códigos numéricos associados é muito importante a usuários de JAWS como é destes que nós descobrimos que tipo de um controle que nós estamos negociando com. Você pode queira folhear este grupo de constantes em HJCONST.JSH. Todos eles começam com WT_ para tipo de janela. * Identificadores de Atributo de texto - Estas constantes são usadas para comparações de atributo de texto. Todos eles começam com ATTRIB_ para atributo e identificam atributo de texto diferente tipos. * Controle Identificadores de Atributo - Estas constantes começam com CTRL_, e é usado para identificar atributos de controle como conferiu, ficava cinzento*, inválido, etc. Estes atributos é análogo aos atributos de texto discutidos acima mas é usado para descrever características de controle. Eles são usados por uma função chamado GetControlAttributes que lucros um valor para todos os atributos de controle. Este valor pode ser comparado às constantes de atributo de controle que usam os operadores de bitwise para obter o controle características. Foram discutidos os operadores de Bitwise em uma seção mais cedo. (Veja Capítulo 7.3.5.7.) * Constantes geralmente Usadas - Estes incluem fio e tipos de procura gráficos que começam com S_, como também Verdadeiro, Falso, de tempo em tempo. * Modos de produção - Estas são constantes que começam com OT_ e são usados que para determinar quando e como JAWS falarão tipos diferentes de informação. Estes produziram tipos são muito importantes para customization de verbosidade de usuário nivela e será discutido mais completamente depois. (Veja Capítulo 8.9.) * Artigo Digita - Estas constantes, enquanto começando com IT_, é usado para descrever os artigos na função de GetItemRect. * Modos para a Exibição de Braile - Este todo o começo com BRL_ e é usado para fixar modos diferentes para exibições de Braile. * Braile que Marca Tipos - Estes também começo com BRL_ e é usado para montar atributo de Braile que marca opções. * Colocações de verbosidade - Estes são o NOVATO, INTERMEDIÁRIO E níveis AVANÇADOS e MESSAGE_LONG E MESSAGE_SHORT para opções de tipo de mensagem longas e curtas. * Controle de botão ID - Estes tudo começam com ID_ e são usado com a função embutida chamado DLGSelectControls, uma função exibia os controles do ativo dialogue em uma caixa de lista. O DLGSelectControls funcionam presentes o usuário com várias possíveis ações executar no controle selecionou na caixa de lista, como único trinco partido, direito único trinco, etc. e então lucros um Controle ID para a ação selecionada. Estas constantes representam o Controle de botão números de ID para as várias possíveis ações. * Tipos de botão - Estas constantes tudo começam com BT_ e são usado com a função DLGSelectControls. Eles representam as ações, como único trinco esquerdo, direito único trinco, etc., ser incluído como escolhas no diálogo. Em outro palavra, estes representam os botões o usuário verá no diálogo para o vário possível ações ser levado no artigo selecionaram na lista de controles. * Geral - Estes incluem prova para estados ativos e inativos, sucesso ou fracasso, cursor digita, vária leitura e colocações de destaque e opções, procura gráfica, constantes, e anexo de ponteiro. * Identificadores de opção Usados por SetJcfOption e GetJCFOption Functions - Estas constantes, todo o começo com OPTE, é usado recobrar e fixar, rapidamente, tudo de os vários parâmetros que são fixos, permanentemente, pelo Gerente de Configuração. * Restrição Digita - Estas constantes, todo o começo com RESTRINJA, é usado para descrever o estado de restrição para as JAWS e cursores Invisíveis. * Cursor Digita - Estes são usados para descrever várias formas do ponteiro de rato. Eles começam com CT_. Por exemplo, CT_Wait corresponde ao copo de hora, e CT_ARROW representa o ponteiro de seta. * Modos de cardápio - Estas constantes descrevem o ativo contra estados inativos de cardápios e barras de cardápio. * Arquivos de falta - Estas constantes, enquanto começando com DEFAULT_, descreva os planos de teclado de falta. * Tipos de Foco mágicos - Estas constantes de MF_ são por fixar como Mágico aumenta e exibe a tela. * Localizando Máquinas - Estas constantes, enquanto começando com TE_, se refira se JAWS ou está sendo usada Magia para localizar a tela. * Palavra delimiters - Esta única constante é usada pela função de IsWordDelimiter determinar se um determinado caráter for um palavra delimiter. * para o Ajuste diálogo de verbosidade de JAWS - Estas constantes são usadas para descrever várias entradas para criação do Ajuste diálogo de Verbosidade de JAWS. * Formato - Estas constantes começam com FORMAT_ e relacionam às várias opções de formato disponível debaixo do cardápio de colocações do Gerente de Configuração. Capitalização Digita - Estas constantes, enquanto começando com CAPITALIZATION_, é usado pela função de SayFormatAndText descrever estado de capitalização como indefinido, tabixe, boné, e todos os bonés. * Contexto de voz nomeia - Estas constantes, enquanto começando com VCTX_, represente as vozes de JAWS diferentes como Global, Mensagem, JAWS, etc. * Parâmetros de voz - Estes são usados para vários parâmetros de voz como volume, taxa, lance, etc. e começa com V_. * Unidades de movimento - Estas constantes, enquanto começando com UNIT_, represente movimento de cursor através de várias unidades (caráter, linha, página, etc.). * Direção de movimento Avalia - Estas constantes são usadas representar movimento nas direções dianteiras e para trás e começar com MOVE_. * O Fio para Usar Entre Artigos em DLGSelectItemInList - Esta constante representa o separador a ser usado entre artigos ao construir a lista de artigo para DLGSelectItemInList. * Constantes para Uso Com o WindowsMinMaxEvent - Estas constantes, enquanto começando com SW_, é somente para uso com a função de WindowMinMaxEvent. * Tipo de Caixa de mensagem Specifiers - Estes determinam o tipo de caixa de mensagem (por exemplo, OK, Yes/No, etc.) que será exibido pela função de ExMessageBox. Eles começam com MB_. * Mensagem Caixa Retorno Valores - Estas constantes todo o começo com ID e é usado para representar os valores (por exemplo, OK, Cancele, Tente novamente, etc.) devolveu pelo ExMessageBox função. Todas as categorias constantes descreveram acima se referem, como declarado, para o HJCONST.JSH cabeçalho arquivo que transporta com JAWS. Nós não quereríamos dar a impressão que estas são as únicas constantes disponível para você. Claro que, você pode e deveria criar suas próprias constantes, ou os declarando se aproxime o topo de seu arquivo de script ou os colocando em um arquivo de cabeçalho incluído. Constantes usando sempre que possível faz compreensão do arquivo de script mais fácil e torna isto possível mudar o valor de uma constante em todos lugares no arquivo por há pouco uma declaração variável. Isto é muito mais fácil que tendo que mudar um valor em todo local onde se aparece no arquivo. Lição de casa #8 Saymos você é aproximadamente para script uma aplicação chamada SPAMKILLER.EXE. Você estará usando um arquivo de cabeçalho, um arquivo de mensagem, e a dois falta HJ variável global e arquivos constantes. Também, você precisará definir três variáveis globais adicionais chamadas GlobalSpamInteger, GlobalSpamString, e GlobalSpamHandle e três adicional constantes definiram como SpammerOne =1, SpammerTwo = 2, e SpammerThree = 3 dentro do arquivo de script. Mostre o começo do arquivo de script com tudo das declarações isso faz estas coisas. A resposta pode ser achada em Apêndice o A. (Veja Capítulo 14.7.) 8.6 Funções Múltiplas usando Às vezes você tem que "amarrar" várias funções junto para alcançar sua meta. Outras situações requerem funções "aninhadas" onde uma função se torna o parâmetro para outro que é o parâmetro para ainda outro. Isto pode olhar, enquanto confundindo bastante no código. O truque é contar para cima os parênteses. Eles vão mostre para você como as funções são aninhadas dentro de um ao outro. Primeiro nós olharemos para um grupo de funções amarrado junto para um único propósito e então nós olharemos a um função aninhada. 8.6.1 Funções usando Consecutivamente É bem raro quando você puder realizar uma tarefa com uma única função. Normalmente são requeridas várias funções na própria ordem. O código seguinte é de um arquivo de script para Visual Básico 4.0. É trtablho é conferir se a Caixa de ferramentas é a janela de foco e, se não, faça assim e então posiciona o cursor de JAWS no primeiro ícone de ferramenta. A propósito, nós usamos os casa fila utilidade scripts para entender a classe de janela da janela de caixa de ferramenta, ToolsPalette, antes de nós escrevêssemos este script. script GoToToolBox () ; Este script focaliza na ferramenta encaixote e posições o cursor de JAWS ; à primeira ferramenta da caixa de ferramenta Say ("Caixa de Ferramenta", OT_JAWS_MESSAGE); Deixe o usuário saber o que está acontecendo Enquanto GetScreenEcho () != 2; Volta pelas colocações de eco de tela até que nós fixamos verbosidade de tela a tudo ToggleScreenEcho (); eco de tela de Incremento EndWhile Se GetWindowClass (GetFocus ()) != "ToolsPalette" Then Se nós já não estamos na caixa de ferramenta PCCursor (); {ALT+V}; Cardápio de Visão Pausa (); Tempo para o cardápio para se aparecer {x}; Caixa de Ferramenta Seleta EndIf Delay(10); proveja tempo por caixa de ferramenta se aparecer RouteJAWSToPC () JAWSCursor () JAWSPageUp () JAWSHome () PerformScript ({TABIXO SETA}); Regular tabixo seta com materiais especiais para a caixa de ferramenta EndScript * Primeiro nós temos certeza nós estamos dentro say todo o modo de eco de tela. * Próximo nós conferimos para ver se nós não estivermos na caixa de ferramentas adquirindo a classe de janela da janela de foco atual e comparando isto ao fio, ToolsPalette que é, a classe de janela conhecida da janela de caixa de ferramentas. (Esta classe de janela teria estado definida em uma constante inclua arquivo para este arquivo de script.) Se nós não estamos dentro o caixa de ferramentas, então nós temos que fazer que a janela de foco executando várias funções que garantirão o resultado de fim. * Nós usamos o PCCursor funcionam para forçar o cursor de PC ativo. * Nós usamos a simulação de teclado para enviar um ALT+V à aplicação. Isto baixa o cardápio de Visão. Se lembre que qualquer coisa em parênteses ondulados é passado o aplicação, da mesma maneira que se você tivesse digitado isto do teclado. Note que há um comentário lá para deixar qualquer um lendo isto saiba que de que é o propósito {Alt+V}. * A função de Pausa dá o tempo de sistema então para baixar o cardápio antes de nós continuássemos. * Nós usamos a simulação de teclado para enviar um X à aplicação que é a chave de acelerador para o artigo de cardápio de caixa de ferramentas. Isto também é comentado. * Então o EndIf termina nosso Se-então sucessão. * Agora nós estamos seguros a caixa de ferramentas está aberta e tem o foco. * Então nós ativamos o cursor de JAWS e posicionamos isto no primeiro ícone de ferramenta. Nós usamos várias funções consecutivamente para realizar nossa tarefa. 8.6.2 Funções Aninhadas usando Aqui é um exemplo de um script com uma função aninhada em que funções são usadas como parâmetros de outras funções. script IsJAWSWindow () Se (GetWindowClass (GetAppMainWindow (GetFocus ())) == JFWUI2) Então Say (msg113, OT_JAWS_MESSAGE); "Esta é a "janela de aplicação de JAWS EndIf EndScript Nós podemos descobrir que a classe de janela da janela de JAWS é JFWUI2 indo para a janela de JAWS e virando nas funções de fila de casa. Usando SHIFT+F2 nos levarão para a janela de pai, e F3 vai ciclo pelos modos de produção até que nós vimos classificar. Então F1 falará a classe que é JFWUI2. Nós queremos comparar nossa janela classifique a isso, mas primeiro nós temos que ter certeza que nosso script está olhando para o lugar correto. Nós usamos a função, GetWindowClass para examinar uma classe de janela. Seu parâmetro é uma manivela de janela, assim nós damos isto AppMainWindow que é o pai na aplicação atual. Nós usamos isto porque JAWS são uma aplicação, e nós queremos conferir a classe de janela daquela aplicação. AppMainWindow requer uma manivela de janela como seu parâmetro assim sabe qual aplicação para conferir. Em nosso caso nós usamos a função, GetFocus que devolve a manivela de janela da janela de foco. Simplesmente dito é: adquira a classe de janela da janela de aplicação que tem o foco. Lição de casa #9 Voltemos uma vez mais para o WordPad Diálogo Aberto. Abra este diálogo e dê uma olhada para refrescar sua memória. Escreva um script que determinará, em primeiro lugar, se você está neste diálogo. Nesse caso, tenha seu script dizer Diálogo" "ao ar livre. Então, determine se o foco está no filename edite janela. Nesse caso, tenha o script também say "e no "campo de filename. Porém, se foco estiver em outro controle, tenha o script dizer, em vez da segunda mensagem sobre, "mas não no filename campo." Finalmente, se o foco estiver nem mesmo ao ar livre Diálogo, tenha o script não dizer Diálogo" ao ar livre. Sugestão - O Diálogo Aberto é uma real janela. Recorde que isto significa é uma janela que tem um título. Use este fato para determinar se você for ao ar livre Diálogo. Use a classe de janela de seu controle atual para determinar se você é focalizado no campo de filename. Segunda Sugestão - Olhar para cima a função chamado GetRealWindow em Apêndice C. que Uma possível resposta pode ser achada em Apêndice o A. (Veja Capítulo 14.8.) 8.7 selecionando e Manipulando Cursores Antes de você tentar ler algo da tela com um script, vale a pena para revisar um pouco de informação sobre cursores que nós cobrimos mais cedo. (Veja Capítulo 5.3.2.) Há quatro tipos de cursores, o cursor de PC, o cursor de JAWS, o cursor Invisível, e o cursor de PC Virtual. Se você está editando ou está entrando em texto, o cursor de PC é onde seriam colocados caráter quando você digitar. (Isto que edita ou forma de inserção de texto do cursor de PC também é chamada um ponto de inserção ou quilate.) Porém, quando você estiver usando um cardápio ou tabbing por algumas seleções como botões em uma caixa de diálogo, o cursor de PC é o foco. Se você deseja ler outras áreas de uma janela ou leu uma parte da tela onde o cursor de PC não pode ir, você pode trocar ao cursor de JAWS. O cursor de JAWS pode ser movido em qualquer lugar dentro dos limites da real janela atual, tornando isto possível explorar áreas da tela onde o cursor de PC não pode ir. Desde o cursor de JAWS sempre move o ponteiro de rato a seu local, é posicionado sempre o ponteiro de rato e pronto ser clicado no local do cursor de JAWS se você deveria decidir fazer assim. O terceiro tipo de cursor é chamado o cursor Invisível. De um modo é há pouco igual o cursor de JAWS como seu movimento também é restringido só pelos limites da real janela, mas não tem nenhuma entidade visível na tela desde que não traz o ponteiro de rato com isto. O cursor de PC Virtual é um caso especial do cursor de PC que é virado automaticamente em em certas aplicações como Internet Explorer 5, Outlook/Outlook Express, e Eudora 4.X onde um browser de Microsoft ou espectador de estilo de browser está sendo usado. O cursor de PC Virtual é criado dentro de um pára-choque de JAWS especial e é empregado para permitir o usuário para ter um cursor que pode navegar ao redor do espectador janela embora aquele espectador não tenha um ponto de inserção normal de fato. O usuário está navegando de fato no pára-choque virtual criado por JAWS e tatos como se navegação estivesse acontecendo dentro de um processador de textos tipo de aplicação. Isto faz muito leitura em tais aplicações mais fácil. Como nós usamos estes cursores? É geralmente não prático e freqüentemente impossível ir explorar ao redor da tela com o cursor de PC. Então, antes de nós fôssemos ler algum texto da janela, nós normalmente primeiro interruptor para um dos outros dois cursores. A pessoa pode usar as JAWS ou o cursor Invisível quase para fazer a leitura tão até certo ponto para você, é há pouco uma questão de escolha. Porém, se você planejar clicar um botão ou entrar alguma outra em ação com o rato, será necessário para use o cursor de JAWS. Considerando que o ponteiro de rato acompanha o cursor de JAWS em suas viagens, é então uma questão simples para clicar o rato como já está dentro o correto posição. Se você não deseja mover o cursor de JAWS de sua posição atual, ou não haverá qualquer necessidade para fazer tique-taque em qualquer coisa, o cursor Invisível é o melhor escolha. Há uma situação particular que vem notar quando você definitivamente não quererá mover o cursor de JAWS. Às vezes em uma aplicação de Windows, informador texto se aparecerá em algum lugar na tela, normalmente os estados enfileiram, quando o ponteiro de rato está em um local particular. Se você move o cursor de JAWS para ler o texto, o ponteiro de rato moverá com isto, e o texto desaparecerá. Nesta situação, você tem que usar o cursor Invisível para ler tal texto. Em alguns casos, é necessário mover um dos cursores como o cursor de JAWS, embora você queira isto para estar de volta em seu local original quando o script for terminado. Por isto, há economize e restabeleça funções que você pode usar para repor tudo como estava antes de seu script foi executado. Aqui é uma lista das funções que você pode usar selecionar e manipular os cursores. * PCCursor () - Ativa o Cursor de PC. * JAWSCursor () - Ativa o Cursor de JAWS. * InvisibleCursor () - Ativa o Cursor Invisível. * BrailleCursor () - Ativa o cursor de Braile. * RouteBrailleToPc () - Move o cursor de Braile ao cursor de PC. * RouteBrailleToJAWS () - Move o cursor de Braile ao cursor de JAWS. * RouteJAWSToBraille () - Move o cursor de JAWS ao cursor de Braile. * RoutePCToBraille () - Move o cursor de PC ao cursor de Braile, se possível. * RoutePCToJAWS () - Move o Cursor de PC ao Cursor de JAWS, se possível. * RouteJAWSToPC () - Move o Cursor de JAWS ao Cursor de PC. * RouteJAWSToInvisible () - Move o Cursor de JAWS ao Cursor Invisível. * RouteInvisibleToPC () - Move o Cursor Invisível ao Cursor de PC. * RouteInvisibleToJAWS () - Move o Cursor Invisível ao Cursor de JAWS. * SaveCursor () - Economiza o cursor ativo e sua posição. * RestoreCursor () - Reativa o cursor economizado e restabelece isto a sua posição original. O próximo grupo de funções é usado para mover o cursor. * PriorCharacter () - Move o cursor ativo ao caráter anterior. * PriorWord () - Move o cursor ativo à palavra anterior. * PriorLine () - Move o cursor ativo à linha anterior. * NextCharacter () - Move o cursor ativo ao próximo caráter. * NextWord () - Move o cursor ativo à próxima palavra. * NextLine () - Move o cursor ativo à próxima linha. * JAWSHome () - Move o cursor ativo ao começo da linha. * JAWSEnd () - Move o cursor ativo ao fim da linha. * JAWSPageUp () - Move o cursor ativo ao topo da janela. * JAWSPageDown () - Move o cursor ativo ao fundo da janela. * MoveTo - Move as JAWS ou cursor Invisível às coordenadas de tela especificadas pelo usuário. * MoveToControl - move o cursor ativo a um controle específico dentro de uma janela. Se o cursor de PC é em que quando esta função é chamada, o cursor de JAWS é virado em automaticamente. Caso contrário o cursor ativo é usado. * MoveToFrame - Move o cursor ativo ao topo deixou canto da Armação especificada. Se o cursor de PC é ativo quando esta função é usada, então o cursor de JAWS, é ativado e é movido à posição nova, caso contrário o cursor ativo é movido. * MoveToGraphic - Move o cursor de JAWS, cursor Invisível, ou cursor de Braile em uma direção específica achar um símbolo gráfico na janela ativa. * MoveToWindow - Move o cursor ativo à janela especificada. Se a janela contiver texto, então o cursor é posicionado no primeiro caráter. Caso contrário, é posicionado ao centro da janela. Se o cursor de PC é ativo que quando esta função for usada, então o cursor de JAWS é ativado e é movido à posição nova. * PriorChunk - Move o cursor ativo ao pedaço grosso anterior de texto. Um pedaço grosso de texto é uma seção ou bloco de texto que é escrito uma vez à tela. * NextChunk - Move o cursor ativo ao próximo pedaço grosso de texto. Um pedaço grosso de texto é uma seção ou bloco de texto que é escrito uma vez à tela. Note que Se seu propósito for ler algo localizado na tela, você normalmente seguiria uma função de movimento com um do say funções. Aqui é um exemplo de economizar o cursor atual, trocando cursores, movendo o cursor, enquanto lendo algum texto e voltando então à posição original com o original cursor: script ReadBottomLine () Var; Declare nossas variáveis locais Int TheTypeCode; Nós temos uma variável de inteireza chamado TheTypeCode Deixe TheTypeCode = GetWindowSubtypeCode (GetCurrentWindow ()); Descubra que tipo de janela ; nós estamos dentro e nomeamos isto a variável de TheTypeCode. SaveCursor (); Exceto o cursor atual e posição InvisibleCursor (); Interruptor para cursor Invisível RouteInvisibleToPC (); Traga o cursor Invisível ao cursor de PC Se (TheTypeCode == WT_MENU) Então; Se nós estamos em um cardápio MoveToWindow (GetAppMainWindow (GetCurrentWindow ())); Refocus na janela principal JAWSPageDown (); Vá para o fundo JAWSHome (); Vá a maioria à esquerda posição NextWord (); Mova um formula à direita SayChunk (); Diz o pedaço grosso de texto que foi escrito junto à tela Outro JAWSPageDown (); Vá para o fundo SayLine (); Say a linha EndIf RestoreCursor (); Volte para o cursor original e posição EndScript Este é o script que lê a linha de fundo de uma janela. Normalmente isto é onde a barra de estado fica situada. O cursor de PC não é permitido ir para este local, assim nós temos que trocar ao cursor Invisível e temos que usar isto para ler esta linha. Note que há uma função de SaveCursor antes de levar esta ação e um RestoreCursor funcione depois. Aquele modo, tudo é igual a antes e depois de ler a barra de estado. Este script usa o Código de subtipo da janela para determinar isso que tipo de janela nós estamos dentro e, então, que declarações de script precisam ser usadas para ler isto. 8.8 que enviam uma Batida de tecla Se você precisa enviar uma batida de tecla ou combinação de batida de tecla de um script (quer dizer, se você quer o script para entrar naquela batida de tecla da mesma maneira que se você estivesse entrando isto do teclado), coloque o nome de batida de tecla em suspensórios. Por exemplo {CONTROL+H} envia um CTRL+H ao sistema. Esta técnica também pode ser usada para enviar alfanumérico caráter. Assim, {h} enviará para a carta h para a aplicação que você está usando. Cada carta que você precisa enviar deve ser colocada dentro de seu próprio jogo de suspensórios. Se você precise enviar mais de um par de cartas, você pode desejar usar o TypeString funcione que enviará um fio inteiro de caráter à aplicação ao uma tempo. 8.9 fabricação Seus Scripts Compatível Com Níveis de Verbosidade de Costume Começando com versão 3.7, JAWS permitem para o usuário personalizar o novato, intermediário, e verbosidade avançada nivela para vestir preferências pessoais. Isto significa que o usuário pode selecionar que tipo de avaliação será tido notícias de JAWS em uma variedade de situações a cada nível de verbosidade. Estas escolhas são feitas na Configuração Gerente debaixo do cardápio de Opções Fixo escolhendo o artigo intitulado "Verbosidade." Isto abre o diálogo de Opções de Verbosidade. Neste diálogo, vê a pessoa, além do três rádio abotoa que permite o usuário para especificar o nível de verbosidade preferido, três botões que permitem o customization de cada nível. Ativando quaisquer destes botões, o usuário é colocado em um diálogo novo, ou o novato, intermediário, ou preferências avançadas dialogam que contém uma caixa de lista em que cada artigo pode ser conferido ou incontrolado com o SPACEBAR. Unchecking que um artigo significa que não dará para avaliação àquele nível de verbosidade. Então, a pessoa enlata tab em cima de para um par de botões de rádio que selecionam se serão ouvidas mensagens curtas ou longas àquele nível de verbosidade. Assim, como JAWS sabem quando falar um tipo particular de informação e como personalizar aquela oração fundou nas preferências de usuário descritas acima? Fazer isto, os escritores de script usam um jogo de constantes chamado tipos de produção. Estes estão definidos no arquivo, HJCONST.JSH. Estas constantes tudo começam com as cartas OT_. Para exemplo, um das constantes de tipo de produção é OT_APP_START. Se você olhar para a primeira entrada nos Artigos a ser Falados lista mencionada acima, você verá que é Mensagem de Começo de Aplicação" chamada." Esta freqüentemente é a mensagem de JAWS que você ouve quando você começar uma aplicação primeiro. Se este artigo na lista é conferido, significa Estão sendo instruídas JAWS para falar as mensagens contidas em funções de SayMessage que usam a constante de OT_APP_START. Por exemplo, uma função de SayMessage formulou como mostrado tabixo falará sua mensagem quando o Aplicação Começo Mensagem artigo é conferido nos Artigos a ser Falados lista. SayMessage (OT_APP_START, MESSAGE_L, MESSAGE_S) Se o Aplicação Começo Mensagem artigo não é conferido, então SayMessage funciona, enquanto usando isto produzido que tipo não será falado. MESSAGE_L E MESSAGE_S representam constantes definido pelo escritor de script representar muito tempo e versões curtas da mensagem particular e é colocado em um JSM cabeçalho arquivo para a aplicação particular. Se a versão longa ou curta é falada depende em se o usuário selecionou o JAWS mensagem rádio botão longo ou curto no diálogo de preferências. Outros artigos nos Artigos ser Falado lista e os tipos de produção correspondendo deles/delas são Mensagem de JAWS (OT_JAWS_MESSAGE), Mensagem de Tela (OT_SCREEN_MESSAGE), Controle Nome (OT_CONTROL_NAME), Controle Tipo (OT_CONTROL_TYPE), Nome de Diálogo (OT_DIALOG_NAME), Texto de Diálogo (OT_DIALOG_TEXT), Nome de Documento (OT_DOCUMENT_NAME), Artigo Selecionado (OT_SELECTED_ITEM), Estado de artigo (OT_ITEM_STATE), Informação de Posição (OT_POSITION), Mensagem de Erro (OT_ERROR), Número de Artigo (OT_ITEM_NUMBER), Gorjeta de Ferramenta (OT_TOOL_TIP), Informação de Estado (OT_STATUS), Nome de Grupo de Controle (OT_CONTROL_GROUP), Mensagens de Ajuda Inteligentes (OT_SMART_HELP), e Seleciona (OT_SELECT). Ao construir scripts que dão avaliação verbal para o usuário, deveria ser tomado cuidado para usar o tipo de produção correto constante de forma que as preferências de verbosidade do usuário será honrado. 8.10 Documentação sincronizando Depois que você faz qualquer editando de seu arquivo de script, enquanto especialmente editando isso inclui scripts somando ou apagam os colando em outro lugar dentro de ou realçando e apagando, é sábio para sincronizar a documentação. Todo script deveria ter uma entrada de documentação correspondente no arquivo de JSD do mesmo nome. Você é, claro que, incitou para esta informação quando você cria um script, mas durante o processo editando, poderia haver scripts sem entradas de documentação e documentação entradas para scripts que já não existem. Isso é por que nós temos o Sincronize artigo de Documentação no script Gerente Arquivo cardápio. Aqui são os passos que script O gerente executa quando você escolher este artigo de cardápio: 1. O Gerente de script olha no JSD arquive para uma entrada de documentação para cada script no arquivo de JSS e soma uma entrada em branco para cada que está perdendo. (Você deve passe por qualquer script que você pensa poderia ter entradas em branco e poderia digitar a própria Sinopse e Descrição depois do processo de sincronização.) Você notará, quando você expõe o diálogo de documentação que se você tem um script em seu arquivo de aplicação com o mesmo nome como um no arquivo de falta, a documentação de o script de Falta foi colocado nos campos para seu script. Você pode precisar modificar esta documentação para emparelhar como este script ou função trtablha com seu aplicação. 2. Gerente de script confere o JSD arquivam para qualquer entrada de documentação que já não tem scripts correspondentes no JSS arquive e pergunta se você quiser apagar o entrada de documentação. O comando de sincronização também é útil ao colar scripts em um arquivo de script de um arquivo de script diferente. O processo usará as mesmas técnicas descritas sobre colocar documentação em branco no arquivo de JSD para os scripts colados. Isto deveria ser preenchido com a informação apropriada. Usando este processo de sincronização assegura que seus scripts e documentação sempre são atuais. Se lembre, usos de JAWS a Sinopse e Descrição para Teclado Ajuda quando o usuário aperta a chave correspondente para seu script. Então, mantendo sua corrente de documentação ajudarão todos os usuários de seus scripts. 9 depuração Foram escritos volumes sobre depurar programas. A coisa mais importante para se lembrar é que leva uma mente diferente fixada que diagnósticos normais. Diagnosticando um problema normalmente começa com a suposição que tudo que no que você está trtablhando estava trtablhando uma vez e está agora quebrado. Então, se você segue o fluxo lógico simplesmente de comece a terminar, você achará a parte errante. Depurar algo que ainda não trtablhou meios que você não pode assumir isso nem sequer o fluxo está correto. Como isto relaciona a depurar nosso arquivo de script? É simples. Não assuma isso que você pretendeu para o fluxo para ser um certo modo que será só porque. JAWS sempre pode não pensar o mesmo modo você faz ou, céu proibe, você pode ter omitido algumas declarações vitais. Um das técnicas mais úteis por achar lógico erros são passar pela linha de script através de linha, enquanto o fingindo são o computador. Faça o que o script diz para fazer exatamente, não o que você pensa que você contou o computador fazer. Você pode achar, para sua surpresa, que você deu uma instrução que é bastante diferente do que você pretendeu de fato. Corrija estes enganos como você ache eles, e então continua em pelo script, enquanto conferindo cada declaração para ver se realmente estiver fazendo isso que você pensamento. Aqui são algumas outras ferramentas que pode o ajudar no esforço de depuração. 9.1 o Compilador de script de JAWS A primeira ajuda grande é a compiladora de script. Confere a sintaxe de suas declarações e também tem certeza que você completa cada sucessão corretamente. Exibe um mensagem de erro quando você tenta compilar um script com um engano nisto. Esses de você que escreveram macros para JAWS no passado notará que os erros de compilador para scripts é mais descritivo. Depois que você despedir o diálogo de erro, o cursor será colocado no script perto do erro ou o que o compilador pensa é o erro. Você tem que entender que o compilador sempre não pode saber exatamente onde o engano é. Se você usa várias declarações Se-de então que são aninhadas, por exemplo, e você esquece de usar o número correto de declarações de EndIf, o compilador sinalizará um erro, mas o cursor pode não ser localizado onde a declaração de EndIf perdida deveria ter sido. O cursor pode ser várias linhas longe daquele local. O compilador pode só lhe falar que seu Se-então não são formuladas voltas corretamente e que um Se declaração deve ser seguida por uma declaração de EndIf. Está até você descobrir onde você pretendeu pôr aquela declaração perdida. Inclua são examinados arquivos como são incluídos eles. Sempre coloque o inclui declaração em seu arquivo de script antes de você usasse qualquer coisa dentro o inclua arquivo. Por exemplo, você tem que incluir HJCONST.JSH antes de usar quaisquer das constantes nisto. Claro que, se você está dispondo seu arquivo de script corretamente, tudo de seu inclui estará próximo o começo do arquivo de script de qualquer maneira. 9.2 Atividade errônea Por atividade errônea, queremos dizer nós o script está trtablhando (i.e., compilou corretamente) mas pode não estar trtablhando como planejado. Uma vez seu arquivo de script compila sem erro, está na hora para testar isto em seu ambiente planejado. Não é necessário reiniciar JAWS antes de testar, a menos que você esteja modificando o arquivo de script de falta. Há pouco troque à aplicação e teste. Aqui são alguns gorjetas fazer a prova processar mais fácil: * Fragmentos - Sempre que possível, compile fragmentos separadamente e testa para ver se eles trtablharem por eles. * Podem ser inseridas mensagens a pontos cruciais em seu código assim JAWS lhe contam o que está fazendo. Você pode pôr Diz mensagens em partes cruciais de um script ver se eles são realmente executando quando você pensa que eles deveriam ser. Umas séries destas mensagens que dizem coisas ligeiramente diferentes podem ser muito informativas lhe ajudando a decifrar se o código está sendo executado na ordem você pretendeu e se ramificando está acontecendo corretamente. Por exemplo, Say mensagens em cada perna de um Se declaração informará você do qual perna foi executada. Você também pode usar o SayInteger funcionam para o informar dos valores de variáveis de inteireza e como estes valores estão mudando durante execução de script. Você pode achar que estas variáveis não têm os valores que você esperou a certos pontos durante execução de script. A função de SayInteger pode também seja útil lhe ajudando a manter rasto de inteireza valores variáveis durante a execução de uma volta de Tempo. * Podem ser localizados muitos erros de operação ao fracasso economizar e restabelecer estados corretamente. Isto recorre a estados de cursor, estados de eco de tela, que verbosidade declara, etc. A qualquer hora você tem que mudar um estado para seus propósitos, volte ao estado original. Por exemplo, eco de tela variável para Tudo de forma que você pode ouvir uma bolha de ajuda falada está bem, mas não deixa o jogo de sistema que modo como será mesmos confundindo ao usuário. * Depure Scripts - Você pode criar depure scripts que informam todos os tipos de informação gostam que cursor é ativo, o que é contido em variáveis, e vária janela propriedades. Aqui são um par de scripts você pode copiar e pode colar em seu arquivo de script e pode modificar para informar informação atrás a você. script SayVars Say (MyVariable, OT_DEBUG); Preencha o nome de sua variável ; Cópia a linha precedendo para cada uma de suas variáveis EndScript script WindowInfo Say (GetWindowClass (GetFocus ()), OT_DEBUG); classe de Janela de controle de foco Say (GetWindowClass (GetParent (GetFocus ())), OT_DEBUG); classe de Janela do pai UtilitySayInfoAccess (); Controle nome EndScript * Interações de Seus Scripts com Funções de Evento - Você tem que se lembrar de que JAWS têm as funções de evento que estão presente no arquivo de script de falta que pode ative automaticamente como uma aplicação está correndo. Estes que funções de evento podem interagir de modos inesperados com os scripts que você está escrevendo. Por exemplo, você pode leitura de lugar funciona em seu script para ler certas partes da tela a certos tempos, só achar que a informação está sendo falada duas vezes. Isto provavelmente meios aquele das funções de evento como o NewTextEvent funciona ou a função de Evento Mudada Focalizada está sendo chamada para falar o texto automaticamente, e seu script está dizendo em uma segunda vez por isto. Você não achará o problema somente analisando seu script desde que não é seu script que está falando a informação duas vezes. Isso é por que é importante você ter uma compreensão do que as funções de evento de JAWS fazem e quando eles serão chamados por uma aplicação. Lição de casa #10 O script seguinte contém um erro em cada linha. Identifique esses erros e reescreva o script corretamente. A resposta pode ser achada em Apêndice o A. (Veja Capítulo 14.9.) script SayDefaultButton (Int Button) vars amarre DefaultButtonName, se (DialogActive ()) deixe DefaultButtonName == GetDefaultButtonName se (DefaultButtonName != " ") então se (GetVerbosity () = 0) então Say ("msg70", OT_JAWS_MESSAGE); botão de falta" é" EndIf () Say (DefaultButtonName), OT_CONTROL_NAME) Outro () Say (msg444, OT_JAWS_MESSAGE): "Não pode determinar botão de falta nesta caixa de diálogo " Fim Se Outro () Say (msg71, OT_JAWS_MESSAGE; "não em uma "caixa de diálogo EndIf () Termine script 10 estratégias por Atacar Aplicações Novas Quando você abre uma aplicação nova, especialmente um que não é nenhuma "fala amigável", primeiro que pode ser muito difícil de decidir como continuar a aprender a aplicação plano e como personalizar isto para acesso melhor. Este manual o apresentou às ferramentas de scripting que o ajudarão faça isto. Uma estratégia por se aproximar estas aplicações novas são mostradas em Apêndice o E. Here você achará algumas idéias em como chegar o problema de analisar e scripting uma aplicação nova em combinação com o uso de outras características de JAWS como o uso de armações. 11 diretrizes por Criar Arquivos de script de Distribuição Nós sugestionamos numerosas diretrizes para observar quando criando script arquiva, como usar comentários abundantes e preencher a documentação de script forma corretamente. Claro que, estas são recomendações, e ninguém pode o forçar a seguir estas regras. * Nomes variáveis - Usa nomes variáveis significantes seguidos por um comentário quando o nome não for uma descrição suficiente. * Comentários - Lugar comenta imediatamente depois do começo de cada script ou função que descrevem seu propósito. Comentários também deveriam ser colocados com em declarações complexas onde o propósito não é "Se-então-outro" óbvio como complexo declarações." * Mensagens - Tudo falados ou deveriam ser postas mensagens de Braile no arquivo de mensagem para a aplicação atual onde eles podem ser referenced pelo script. Estas mensagens nunca deveria ser colocado com em partidário de citações o Say ou SayMessage no JSS se arquivam. Obedecendo esta regra faz tradução das mensagens a outros idiomas muito mais simples. * Documentação de script - Preencha a sinopse e campos de descrição no diálogo de script novo. Estes deveriam ser com precisão e completamente enchido em como eles são usados na INSERT+1 teclado ajuda. Por exemplo, no script SayTextAndAttributes, você achará a sinopse seguinte e descrição: Sinopse - Fala mudanças em atributos como lê o texto na janela ativa. Descrição Lê o texto visível na janela ativa sem mover o cursor. Como ignora mudanças em atributos, eles são anunciados. * Tenha certeza seu arquivo de script inclui versões feito sob encomenda do HotKeyHelp, o ScriptFileName, e se necessário, os scripts de ScreenSensitiveHelp. 12 Arquivos de Macro convertendo Você pode usar o Gerente de script para converter arquivos de macro que você criou para versões de JAWS antes das 3.0. O seguinte descreve os passos que usos de Gerente de script converter arquivos de macro a arquivos de script. 1. Primeiro, Gerente de script requer alguma contribuição de você. Quando você escolher Arquivo de Macro de Importação do cardápio de Arquivo, você tem que entrar no nome de arquivo do arquivo de macro. script Gerente usa esta informação para determinar o caminho e nome de arquivo do arquivo de script resultante. Você também tem que escolher o ambiente para o qual o arquivo de macro era criado: Topo da escrivaninha, Laptop, ou Ambos. 2. Gerente de script cria um arquivo de script vazio baseado no caminho designado e nome de arquivo. 3. Inclua são processados arquivos como segue: * Um arquivo de mensagem é copiado ao diretório designado, renomeou com uma extensão de JSM e o inclua declaração é acrescentada ao arquivo de JSS. * Macros em inclua são movidos arquivos ao JSS arquive e converteu. O procedimento de conversão é como segue. * Se há uma variável global ou seção de definição constante dentro um inclua arquivo, um arquivo de JSH é criado e estes são colocados lá. Um inclua declaração para isto arquivo de cabeçalho é acrescentado ao arquivo de JSS. 4. São convertidos macros como segue: Se uma batida de tecla emparelhando é achada na falta arquivo de mapa fundamental baseado no ambiente escolhido, o script é nomeado adequadamente. * Se uma batida de tecla emparelhando é achada nas "Chaves Velhas" seção da falta arquivo de mapa fundamental, o macro é convertido a uma função de JAWS com o nome apropriado. * Se nenhuma partida é achada, o script é nomeado com o nome de arquivo seguido por um número. 5. Um arquivo de mapa fundamental é criado com tarefas baseado nas batidas de tecla de macro originais. Macros que são convertidos a funções usuário-definidas não são determinadas tarefas fundamentais, mas um comentário é colocado depois do nome de função com a batida de tecla de macro original. 6. Cada PerformMacro é convertido a um PerformScript, a menos que o macro chamado fosse convertido a uma função de JAWS. Naquele caso o PerformMacro é convertido um chamada de função. 7. O arquivo de script resultante é aberto em Gerente de script. 8. A versão prévia de JAWS requereu um espaço entre citações denotar um valor nulo. Nulls na versão atual são denotados por só duas citações sem espaço entre. Se seu arquivo de macro conteve estes testes para nulls, você precisará remover o espaço manualmente entre citações. 9. O último passo é para você passar pelos scripts, mude os nomes, se necessário, e escreve documentação para cada. Se você tivesse macros que serviram como funções, os converta a funções usuário-definidas. Então compile o arquivo de script novo. Nota: Se você estiver fazendo mudanças extensas aos scripts e funções, você pode querer compilar depois de cada mudança. 13 reconhecimentos Eu gostaria de expressar minha avaliação sincera a Glen Gordon, Mike Pedersen, Joseph Dunn, Sean Murphy, Glen Sepke, James Puzzuoli, Les Kriegler, e Vorhees Pardo para as informações técnicas tremendamente úteis deles/delas, idéias, e sugestões. Eu também gostaria de reconhecer Frank Dipalermo que originalmente escreveu o primeiro macro e manuais de script que serviram como o ponto de partida para este projeto. 14 apêndice UM Respostas para Lições de casa Responda a Lição de casa #1 script LastFourFiles () SpeechOff () {Alt+F} Pausa () NextLine () NextLine () NextLine () NextLine () NextLine () NextLine () NextLine () SpeechOn () SayLine () NextLine () SayLine () NextLine () SayLine () NextLine () SayLine () SpeechOff () {escape} {escape} Pausa () SpeechOn () EndScript * * * * * * * * * * 14.1 resposta para Lição de casa #2 script SpeakWindowState () JAWSCursor () SaveCursor () RouteJAWSToPC () JAWSPageUp () JAWSEnd () PriorWord () SayWord () RestoreCursor () PCCursor () EndScript Note isso neste exemplo nós ativamos o cursor de JAWS antes de usar a função de SaveCursor. Desde que o cursor de JAWS é o cursor ativo quando a função de SaveCursor é executado, é o cursor de JAWS que será devolvido a sua posição original pela função de RestoreCursor. O PCCursor () função ao fim virará o cursor de PC atrás em. Isto é necessário desde que o script virou no cursor de JAWS quando foi corrido. A resposta de crédito extra é mostrada tabixo: script SpeakWindowState () InvisibleCursor () SaveCursor () RouteInvisibleToPC () JAWSPageUp () JAWSEnd () PriorWord () Se GetWord () == "Restabeleça Símbolo" Então Say ("Maximizou", OT_STATUS) ElIf GetWord () == "Maximize Símbolo" Então Say ("Restabeleceu", OT_STATUS) Outro Say (não "pôde achar o símbolo", OT_JAWS_MESSAGE) EndIf RestoreCursor () PCCursor () EndScript * * * * * * 14.2 resposta para Lição de casa #3 script PlaybackPosition () SaveCursor () RouteInvisibleToPC () InvisibleCursor () JAWSPageUp () NextLine () NextLine () NextLine () JAWSHome () SayMessage (OT_JAWS_MESSAGE, tempo Atual" é", "Tempo é") SayWord () SayMessage (OT_JAWS_MESSAGE, "segundos fora de") NextWord () NextWord () SayWord () SayMessage (OT_JAWS_MESSAGE, "segundos") RestoreCursor () EndScript * * * * * * 14.3 resposta para Lição de casa #4 Inclua "JAWSWINS.JSH" Inclua "JAWSWINS.JMH" Inclua "HJCONST.JSH" Inclua "HJGLOBAL.JSH" * * * * * * 14.4 resposta para Lição de casa #5 script CheckAndReset () Var Amarre TotalTime; Celebra o valor do tempo total do arquivo são SaveCursor () RouteInvisibleToPC () InvisibleCursor () JAWSPageUp () NextLine () NextLine () NextLine () JAWSEnd () PriorWord () Deixe TotalTime = GetWord () JAWSHome () Se GetWord () == "0.00" Então SayMessage (OT_JAWS_MESSAGE, "no começo da gravação",) ElIf GetWord () != "0.00" && GetWord () "zzzzz" Então Retorno "" EndIf Se (StringContains (CurrentWord, "um")) || (StringContains (CurrentWord, "b")) || (StringContains (CurrentWord, "c")) || (StringContains (CurrentWord, "d")) || (StringContains (CurrentWord, "e")) || (StringContains (CurrentWord, "f")) || (StringContains (CurrentWord, "g")) || (StringContains (CurrentWord, "h")) || (StringContains (CurrentWord, "i")) || (StringContains (CurrentWord, "j")) || (StringContains (CurrentWord, "k")) || (StringContains (CurrentWord, "l")) || (StringContains (CurrentWord, "m")) || (StringContains (CurrentWord, "n")) || (StringContains (CurrentWord, "o")) || (StringContains (CurrentWord, "p")) || (StringContains (CurrentWord, "q")) || (StringContains (CurrentWord, "r")) || (StringContains (CurrentWord, "s")) || (StringContains (CurrentWord, "t")) || (StringContains (CurrentWord, "u")) || (StringContains (CurrentWord, "v")) || (StringContains (CurrentWord, "w")) || (StringContains (CurrentWord, "x")) || (StringContains (CurrentWord, "y")) || (StringContains (CurrentWord, "z")) || (StringContains (CurrentWord, "1")) || (StringContains (CurrentWord, "2")) || (StringContains (CurrentWord, "3")) || (StringContains (CurrentWord, "4")) || (StringContains (CurrentWord, "5")) || (StringContains (CurrentWord, "6")) || (StringContains (CurrentWord, "7")) || (StringContains (CurrentWord, "8")) || (StringContains (CurrentWord, "9")) || (StringContains (CurrentWord, "0")) Então Retorno "" EndIf Devolva "Todos os Bonés" EndFunction script SayWord () Se (IsSameScript ()) Então Say (SayAllCaps (GetWord ()), OT_MESSAGE) SpellWord () AddHook (HK_SCRIPT, "SpellWordHook") Outro SayWord () EndIf EndScript * * * * * * 14.6 resposta para Lição de casa #7 Edite Janela: SayTypeAndText - Edite Foco - Esta é uma manivela de janela, assim sempre é variável ControlID - 59648 Classe - Edite Tipo - RichEdit SubTypeCode - 3 Real Nome - Documento WordPad (o assumindo não carregaram um arquivo) Janela de Filename: SayTypeAndText - Filename Edit Foco - Esta é uma manivela de janela, assim sempre é variável ControlID - 1152 Classe - Edite Tipo - Edite SubTypeCode - 3 Real Nome Aberto Nota - Se você olhar em HJCONST.JSH, você achará que um SubTypeCode de 3 é igual para um edite janela. Nestes casos, o SubTypeCode não provê mais nenhuma informação que a classe. Também, nota que as duas janelas têm ControlID diferente numera, embora eles sejam que ambos editam janelas. * * * * * * 14.7 resposta para Lição de casa #8 ; Este é o arquivo de script para SPAMKILLER.EXE, criado pelo Michael Glen, ; Este arquivo era por último atualizado no dia 4 de julho de 1776. Inclua "SPAMKILLER.JSH"; arquivo de Cabeçalho Inclua "SPAMKILLER.JSM"; arquivo de Mensagem Inclua "HJCONST.JSH" Inclua "HJGLOBAL.JSH" Globals Int GlobalSpamInteger, Amarre GlobalSpamString, Controle GlobalSpamHandle Const SpammerOne = 1 SpammerTwo = 2 SpammerThree =3 * * * * * * 14.8 resposta para Lição de casa #9 script IsThisOpenEdit () Se GetWindowName (GetRealWindow (GetFocus ())) == "Abra" Então Say ("ao ar livre diálogo, ", OT_MESSAGE) Se GetWindowClass (GetFocus ()) == "Edite" Então Say ("e no "campo de filename., OT_MESSAGE) Outro Say ("mas não no "campo de filename., OT_MESSAGE) EndIf; nós Estamos dentro o edite campo? Outro Say ("Não ao ar livre diálogo", OT_MESSAGE) EndIf; nós Somos ao ar livre dialogue? EndScript * * * * * * 14.9 resposta para Lição de casa #10 Cada erro é indicado tabixo por uma linha que começa com * * * depois da linha que contém o erro. script SayDefaultButton (Int Button) * * * Scripts não usam parâmetros, só funções os usam. vars * * * Deveria ser Var, não Vars, amarre DefaultButtonName, * * * O último ou só variável não deveriam ter uma vírgula depois disto. se (DialogActive ()) * * * Deveria haver um "Então" ao término da linha. deixe DefaultButtonName == GetDefaultButtonName * * * Neste tipo de declaração onde você está nomeando para um valor, deveria haver só um =. se (DefaultButtonName != " ") então * * * Não deveria haver um espaço entre os aspa. se (GetVerbosity () = 0) então * * * Deveria haver dois = (i.e., ==) nesta declaração. Say ("msg70", OT_MESSAGE); botão de falta" é" * * * Não deveria haver nenhuma citação dentro dos parênteses. Isto diria MSG70 em vez de recitar a mensagem atual. EndIf () * * * Nenhum parêntese busca usado um EndIf. Say (DefaultButtonName, OT_CONTROL_NAME)) * * * Há um extra) ao fim. Outro () * * * Não deveria haver um () depois de um Outro declaração. Say (msg444, OT_MESSAGE): "Não pode determinar botão de falta nesta caixa de diálogo " * * * O comentário deveria começar com um ponto-e-vírgula, não um cólon. Fim Se * * * Há um espaço no EndIf que não deveria estar lá. Outro () * * * Nenhum () depois de um Outro declaração. Say (msg71, OT_MESSAGE; "não em uma "caixa de diálogo * * * Deveria haver um) depois de OT_MESSAGE. EndIf () * * * Nenhum () depois de uma declaração de EndIf. Termine script * * * Não deveria haver um espaço em EndScript. O script como deveria ser e como se aparece em DEFAULT.JSS é mostrado tabixo. script SayDefaultButton () var amarre DefaultButtonName se (DialogActive ()) então deixe DefaultButtonName = GetDefaultButtonName () se (DefaultButtonName != "") então se (GetVerbosity () == 0) então Say (msg70), OT_MESSAGE; botão de falta" é" EndIf Say (DefaultButtonName, OT_CONTROL_NAME) outro Say (msg444, OT_MESSAGE); não "pode determinar botão de falta nesta caixa de diálogo ") EndIf outro Say (msg71, OT_MESSAGE); "não em uma "caixa de diálogo EndIf EndScript 15 apêndice B Descrição dos Cardápios de Gerente de script Aqui é uma descrição breve das seleções disponível debaixo do vário baixe cardápios do cardápio tranque do Gerente de script. Só artigos para os quais são sem igual o Gerente de script ou executa são descritas funções incomuns. Outros que são standard a aplicações de Windows são simplesmente notáveis como "função de padrão." Muitos das funções discutidas tenha acelerador tecla que é listado nos cardápios e o qual você quererá aprender provavelmente. 15.1 Cardápio de arquivo Novo: função standard Aberto: função standard Arquivo de Falta aberto: abre o falta JAWS script arquivo, DEFAULT.JSS. Fim: função standard Economize: Economiza o arquivo, mas também compila e economiza uma versão de JSB binária se economizando um arquivo de JSS. Economize Como: função standard Economize Sem Compile: economiza qualquer arquivo e não compila um arquivo de JSS. Importe Arquivo de Macro: importe um arquivo de macro de versões mais cedo de JAWS. Sincronize Documentação: Tenha certeza o script e arquivos de documentação concordem. Também, ao colar scripts de outro JSS arquivam, copiará documentação no arquivo de JSD relacionado. Para mais informação, veja "Sincronizando Documentação" debaixo de script que Escreve Técnicas. Impressão: função standard Imprima Pré-estréia: função standard Imprima Organização: função standard Saída: função standard 15.2 editam Cardápio Tudo funcionam do edite cardápio é completamente standard, exclua o listado tabixo. script seleto: Seleciona o script inteiro no qual o sinal de intercalação fica situado. 15.3 Cardápio de script script novo: Abre o diálogo de script Novo por criar um script novo. Apague script: Apaga o script onde o sinal de intercalação fica situado. Insira Chamada de Função: Expõe o diálogo de Função de Suplemento por acrescentar uma função a um script. Insira Execute script: Expõe o Suplemento Execute diálogo de script por chamar outro script. Isto é semelhante a chamar uma função, mas chama outro chave-salto script ao invés. Próximo script: Movimentos o sinal de intercalação para o começo do próximo script no arquivo. script anterior: Movimentos o sinal de intercalação para o começo do script atual ou o script anterior, dependendo de local de sinal de intercalação. Vá Enfileirar: Movimentos o sinal de intercalação para um número de linha específico. São mostrados números de linha ao fundo de página. Lista de script: Expõe o diálogo de Lista de script que mostra os scripts no arquivo atual em ordem alfabética. Apertando ENTRAM em um nome de script o leva a isso script. 15.4 Cardápio de visão Documentação: Expõe a Informação de script dialogue que contém tudo da documentação para o script atual. Toolbar: função standard Estados Trancam: função standard Zoom: função standard 15.5 Cardápio de janela Todos os artigos no cardápio de Janela executam funções standards. 15.6 Cardápio de ajuda Ajude Tópicos: função standard Ajuda de palavra chave: Expõe o diálogo de Ajuda de Palavra chave que contém ajuda pelo script ou funciona no qual o sinal de intercalação fica situado. Sobre Gerente de script: função standard 16 apêndice C As Funções Embutidas mais Importantes Nota - a Maioria das entradas na lista seguinte está em ordem alfabética. Porém, foram movidos alguns ligeiramente defeituoso para os colocar próximas funções com semelhante ou funcionalidade relacionada. Esta lista foi atualizada para refletir funções novas somadas em JAWS 3.7. Esses usando versões mais cedo não terão tudo das funções mostrado aqui. * ActivateMenuBar - Activates/deactivates a barra de cardápio para o programa ativo. Mesmo como apertar e libertar a chave de ALT. * ActivateStartMenu - Expõe o cardápio de Começo em Windows 95/98 ou NT. Isto está igual a CTRL+ESC urgente. * AddHook - Instala uma função de gancho. Quando um gancho estiver em lugar, é chamado certo antes de todo script seja corrido, e passou o nome do script atual e armação como seus parâmetros. Se o gancho devolver VERDADEIRO, o script é permitido executar. Se o gancho devolver FALSO, o script não será permitido correr. Veja o KeyboardHelp script e o KeyboardHelpHook funcionam em DEFAULT.JSS para um exemplo de uma função de gancho em ação. Esta ferramenta é discutida mais completamente na seção em Funções de Gancho. * AltLeftMouseClick - Unselects tudo selecionaram artigos previamente. Envia um ALT+LEFT RATO BOTÃO ao sistema. * ControlLeftMouseClick - Simula um trinco de CTRL+Left do rato. Este script provê um método para selecionar non-contiguously de artigos. Um exemplo está selecionando non-contiguously de artigos em uma visão de lista. * ShiftLeftMouseClick - Simula um trinco de SHIFT+Left do rato. Esta função provê um método para selecionar contiguously de artigos. Um exemplo está selecionando artigos contiguously em uma visão de lista ou um edite controle. * BackspaceKey - Se o cursor virtual não for ativo, esta função simplesmente passa o ENTRE em chave por para a aplicação. Se o Cursor Virtual é ativo, qualquer, processo especial requerido por modo virtual é executado. * BrailleAddFocusItem - Usou de dentro o BrailleBuildLine funcionam a anúncio os conteúdos do controle atual para os dados a ser mostrados na exibição de Braile. * BrailleAddFocusLine - Usou de dentro o BrailleBuildLine funcionam a anúncio os conteúdos da linha atual para os dados a ser mostrados na exibição de Braile. * BrailleAddFrame - Usou de dentro o BrailleBuildLine funcionam para acrescentar os conteúdos de uma armação específica aos dados a ser mostrados na exibição de braile. * BrailleAddString - Usado com em BrailleBuildLine acrescentar texto à exibição de Braile * BrailleCursor - Voltas no cursor de Braile. Este cursor só é interiormente usado pelos scripts de Braile e nunca deveria ser partido em depois que um script completar seu trtablho. * BrailleG2StringLength - Determina o comprimento da tradução para classificar dois Braile de um determinado fio. * BrailleNextLine - Se Estruturou modo é ativo, O próximo fio na fila de braile é exibido. Se modo de Navegação for ativo, JAWS ativam o Invisível cursor e movimentos isto para a próxima linha. Caso contrário, uma próxima função de linha normal é executada. * BraillePriorLine - Se Estruturou modo é ativo, O fio anterior na fila de braile é exibido. Se modo de Navegação for ativo, JAWS ativam o Invisível cursor e movimentos isto para a linha anterior. Caso contrário, uma função de linha anterior normal é executada. * BrailleRefresh - Usado refrescar a exibição de braile e redisplay o texto apropriado. * BrailleSetStatusCells - Põe caráter nas celas de estado da Exibição de Braile. Esta função só deveria ser chamada de dentro uma função de BrailleBuildStatus. * BrailleString - Envia o fio especificado à exibição de braile embora se ou não a linha é visível. * CaretVisible - Indica se um ponto de inserção ou um sinal de intercalação é visível na janela ativa. A função devolve um valor constante de "VERDADEIRO" indicar isso um sinal de intercalação é visível e um valor de "FALSO" indicar que não é visível. * ClipboardHasData - Esta função confere para ver se qualquer dados nada estiver presente no clipboard de Windows. Devolverá verdadeiro se houver tal presente de dados. * ColorToRGBString - Converte um valor de cor a um fio da forma "255255255" onde os primeiros três dígitos representam a proporção de vermelho, o segundo três o proporção de verde, e o terço três a proporção de azul. * ControlCanBeChecked - Determina se ou não o controle atual pode ser conferido. * ControlIsChecked - Determina se ou não o controle atual é conferido. * CopyToClipboard - Põe um fio de texto sobre o clipboard de Windows que apaga qualquer conteúdo de clipboard prévio. Para copiar linhas múltiplas de texto, devem ser concatenados estes junto em um único fio antes de chamar CopyToClipboard. No fio concatenado, linhas deveriam ser separadas com \ r\n. * CreateObject - com certeza aplicações (por exemplo, Internet Explorer e Microsoft Office) é possível JAWS obterem informação diretamente daquela aplicação em lugar de confiar em o que é exibido na tela. Fazer isto, necessidades de JAWS um lugar para ir adquirir aquela informação e um tipo de "mapa de estrada" para falar isto onde olhar. O mapa de estrada é chamado um ponteiro de objeto, e o lugar dirige JAWS para é chamado um objeto de automatização para aquela aplicação. Há vários modos de obtenção tal um ponteiro de objeto para este propósito, não tudo dos quais trtablha com todas as aplicações. Um tal método é CreateObject. CreateObject lança uma aplicação debaixo do controle de JAWS, com aquela aplicação que é o objeto de automatização. JAWS podem examinar aquele objeto de automatização então para adquirir as informações precisa. O CreateObject função é semelhante à função de GetObject, a não ser que GetObject cria um ponteiro a um objeto de automatização que já existe considerando que CreateObject também cria o objeto de automatização para a aplicação. * Demora - Faz um script ainda representar um período especificado de tempo. Faz um script parar, espera um período de tempo, e então retoma novamente. É diferente que a função de Pausa que rende às necessidades de processo de aplicações. Depois da demora, o script retomará embora se uma aplicação está imóvel processando. * DialogActive - Usado determinar se uma caixa de diálogo é atualmente ativa. Devolve um valor constante para indicar o estado: "ATIVO" = uma caixa de diálogo é ativa, e "INATIVO" = uma caixa de diálogo não é ativa. Estas constantes podem ser usadas dentro Se - Então-outro declarações. * DLGSelectItemInList - Exibições um diálogo que contém um listbox de artigos. Os conteúdos da lista são construídos pelo usuário que tem que prover um fio que contém cada das entradas de lista separadas por uma barra vertical (|). Esta função normalmente é usada dentro de outro script ou função que especificam que ações são seguir quando um artigo é selecionado e o diálogo é aprovado. Quando o diálogo é aprovado, esta função devolve um índice que permite o script de chamada para decidir que ação levar logo. Veja a função nomeada ToolBar em BROWSEUI.JSS para um exemplo de como esta função é usada. * DLGSelectControls - Exibições uma caixa de lista que contém controles que lata que b ativou. As quatro possíveis ações são único trinco certo, esquerda único trinco, esquerda dobra clique, e mova. O usuário pode especificar o qual destes quatro botões estão presentes como também que é a falta. A lista de controles deve ser construída pelo usuário. O título de janela para o diálogo também pode ser especificado. Esta função é semelhante a DLGSelectItemInList a não ser que provê uma seleção mais larga de ações que pode ser executado no artigo de lista selecionado. * DLGSelectScriptToRun - Exibições um diálogo que contém um jogo de scripts. A lista de scripts é construída pelo usuário. Veja o script intitulou AdjustJawsVerbosity para um exemplo de como isto é terminado. Podem ser executados scripts deste diálogo. * DLGSysTray - Exibições uma caixa de lista que contém os ícones na bandeja de sistema. * DownCell - Quando dentro de uma mesa ou planilha eletrônica, move o cursor ativo à cela na mesma coluna mas a próxima Fila. * UpCell - Quando dentro de uma mesa ou planilha eletrônica, move o cursor ativo à cela na mesma coluna mas a Fila prévia. * PriorCell - Quando dentro de uma mesa ou planilha eletrônica, move o cursor ativo à cela na mesma fila mas a coluna prévia. * NextCell - Quando dentro de uma mesa ou planilha eletrônica, move o cursor ativo à cela na mesma fila mas a próxima coluna. * SayCell - Quando em uma mesa ou planilha eletrônica, fala os conteúdos da cela atual. * SayColumnHeader - Quando em uma mesa ou planilha eletrônica, fala os conteúdos do cabeçalho de coluna. * SayRowHeader - Quando em uma mesa ou planilha eletrônica, fala os conteúdos do cabeçalho de fila. * DragItemWithMouse - A função de DragAndDrop é usada para mover os conteúdos de uma área da tela a outra área da tela. * ElIf - em vez de usar um Outro o operador em um Se-então-outro declaração, você pode querer usar um operador de ElIf. A declaração poderia ser reconstruída então como um Se-então-ElIf-então-El declaração de se. Toda declaração tem que terminar com um operador de "EndIf." As funções de script que se aparecem entre o ElIf e o De então é usado para avaliar se um certa condição está presente. * Outro - O Outro o operador é uma parte opcional de um Se-então - Outro declaração. Se-então-outro declarações sempre fazem uma pergunta aproximadamente se algo é verdade ou falso, i.e., é um presente de condição ou não presente. Quando a condição não está presente (falso), então as ações que seguem o "Outro" é executado. Um Se-então-outro declaração sempre tem que incluir: Se, Então, e EndIf--o Outro é opcional. * EndIf - O operador de EndIf marca o fim de um Se-então - Outro declaração. Um completamente formulou Se-então-outro declaração inclui "Se", "Então", "Outro", e "EndIf." O "EndIf" sempre é exigido terminar o Se-então-outro declaração. * EndWhile - O operador de EndWhile marca o fim de uma "Volta de Tempo." As funções de script que serão repetidas devem ser colocadas entre "Enquanto" e "EndWhile." (Veja descrição da função de Tempo tabixo.) * EnterKey - Se o cursor virtual não for ativo, esta função simplesmente passa o ENTRE em chave por para a aplicação. Se o Cursor Virtual é ativo e posicionado em uma ligação ou abotoa, aquele controle é ativado. Se o cursor virtual estiver em outro controle de forma, Modo de Formas é ativado. * ExMessageBox - Esta função exibe um Windows Caixa de Mensagem Standard em que o usuário pode especificar a mensagem, título, e botões que podem ser ativadas. É muito como a função MessageBox salvo lhe permite especificar o título de Caixa de Mensagem e o tipo de caixa de mensagem (i.e., os botões que são usados e o ícone que será exibido). Esta função também devolve um valor que indica qual botão foi apertado na Caixa de Mensagem. * MessageBox - Usado Fazer uma mensagem encaixotar se aparecem no topo da escrivaninha. Pode ser incluído dentro um Se-então-outro declaração de forma que quando um certo evento acontece, os precisaram mensagem se aparece. * InputBox - Esta função exibe uma caixa de diálogo simples que contém quatro controles. Um controle é um edite caixa na qual você pode entrar em informação. Outro controle é uma janela de Texto Estática que contém o lembrete do edite caixa. Os outros dois controles são o OK e botões de Cancelamento. Se você entra em texto no Edite caixa e imprensa o botão de OK, o texto você digitou o Edite caixa é devolvida à função de chamada por via da terceira variável da função que é uma variável de fio que é passado através de referência à função de chamada. * FileExists - Confere se o caminho especificado existe. * FindColors - Procuras para a ocorrência de uma combinação específica de primeiro plano e cores de fundo. Se a procura tiver êxito, o cursor de JAWS é colocado no começo do texto com a combinação desejada de cores. * FindDescendentWindow - UMA janela descendente é qualquer janela de criança de alguns especificou janela de pai. Pode ser uma criança a qualquer nível debaixo do pai e em qualquer filial. Esta função procura tabixo as filiais do pai achar qualquer janela de criança (janela descendente) com um controle especificado ID. FindFirstAttribute - Procuras para a primeira ocorrência de texto com certos atributos. Começa a procura para baixo ao canto esquerdo superior da janela especificada e movimentos. Se a procura tem êxito, então o cursor ativo é colocado no primeiro caráter que tem os atributos desejados. Geralmente, o cursor de PC pode ser movido prosperamente a atributos dentro de uma janela de texto. * FindNextAttribute - Procuras para a próxima ocorrência de texto com certos atributos. A procura começa no local do cursor ativo e movimentos tabixo por o resto da janela ativa. Se a procura tiver êxito, então o cursor ativo é colocado no primeiro caráter que tem o atributo desejado. * FindPriorAttribute - Procuras para a ocorrência anterior de texto com certos atributos. Começa a procura no local do cursor ativo e movimentos para cima pelo resto da janela ativa. Se a procura tiver êxito, então o cursor ativo é colocado no primeiro caráter que tem os atributos desejados. * FindLastAttribute - Procuras para a última ocorrência de texto com certos atributos. Começa a procura ao mais baixo canto certo da janela ativa e movimentos até o canto esquerdo superior da janela. Se a procura tiver êxito, então o cursor ativo é colocado no primeiro caráter que tem os atributos desejados. * FindGraphic - FindGraphic procura um gráfico na janela especificada. Se o gráfico é achado, então o cursor de JAWS é colocado nisto. O gráfico tem que ter um rótulo de texto associou com isto, porque o FindGraphic funcionam procuras para rótulos de texto. Rótulos de texto são nomeados pelos Gráficos Labeler. * FindString - FindString procura um fio de texto em uma janela especificada. Se o texto é achado, então o cursor de JAWS é colocado no começo do texto fio. * FindTopLevelWindow - Ache o topo janela nivelada com o janela classe and/or janela nome especificado. Se você não deseja procurar baseado em um dos argumentos, use "" para aquele argumento. * FormatString - Formatos um fio provido pelo usuário com mensagens recebidas como parâmetros subseqüentes. Quer dizer, o fio de um usuário pode ser modificado para conter fios novos em certos locais especificados dentro do fio original. A mensagem a ser formatada tem que conter parâmetro lugar proprietário delimiters como %1, %2, %3, %4, %5, etc. O usuário tem que prover os vários fios que serão inseridos no fio original nos locais de cada proprietário de lugar. * GetActiveCursor - Determina qual cursor é ativo. * GetAppFileName - Determina o filename da aplicação ativa programam ou um componente ativo daquele programa que foi executado subseqüentemente. Este filenames é os arquivos de programa atuais que são executados por Windows. O filename da aplicação é usado ao nomear arquivos de script. * GetAppFilePath - Usado adquirir o nome de caminho completamente qualificado do atualmente aplicação corrente. Quando usado em combinação com GetFileDate, podem estar os resultados imagine uma versão de aplicação. * GetAppMainWindow - Determina a manivela de janela para a janela principal da aplicação ativa. * GetAppTitle - Obtém o título do programa de aplicação ativo. Ter o título de aplicação falado, você tem que usar esta função como um parâmetro para o Say função. * GetBrailleCellColumn - Recobra a coluna de tela à qual a cela de Braile especificada fica situada. * GetBrailleCellRow - Recobra a fila de tela à qual a cela de Braile especificada fica situada. * GetCell - Quando em uma mesa ou planilha eletrônica, adquire o conteúdo da cela atual. * GetColumnHeader - Quando em uma mesa ou planilha eletrônica, adquire o conteúdo do cabeçalho de coluna. * GetRowHeader - Quando em uma mesa ou planilha eletrônica, adquire o conteúdo do cabeçalho de fila. * GetCharacter - Cópias o caráter ou rótulo de gráfico onde o cursor ativo é posicionado. O texto copiado pode ser usado então através de outras funções de script. * GetCharacterAttributes - Recobra os atributos de texto do caráter no local de cursor atual. O valor devolvido é uma combinação do mesmo pedaço campos usado em FindFirstAttribute, FindNextAttribute, etc. testar para a presença de um atributo particular, use código da forma: se (GetAttributes () & ATTRIB_UNDERLINE) então... (Veja a seção em operadores de bitwise para uma descrição mais completa.) * GetCharacterFont - Recobra o nome da fonte usado para o caráter no local de cursor atual. * GetCharacterPoints - Recobra o tamanho de ponto do caráter no local de cursor atual. * GetCharacterWidth - Recobra a largura do caráter ou gráfico no local de cursor ativo. * GetChunk - Obtém o pedaço grosso de informação para a qual o cursor ativo está apontando. Um "pedaço grosso" é texto e informação de gráfico nas que foram escritas à tela uma única operação. Porém, GetChunk é semelhante a GetField que o GetField funcionam usa lógica para determinar o texto que será obtido, enquanto GetChunk simplesmente obtém o texto no que foi armazenado o Fora Modelo de Tela como uma única unidade. * GetField - Obtém a informação no campo onde o cursor ativo está apontando. Um "campo é uma seção de informação (normalmente texto) isso tem um atributo comum, i.e., tipo negrito, sublinhou, itálicos, ou strikeout. O uso do atributo deve ser contíguo. Porém, GetField é semelhante a GetChunk que o GetField funcionam usos lógica para determinar o texto que será obtido, enquanto GetChunk obtém o texto no que foi armazenado simplesmente o Fora Modelo de Tela como uma unidade. * GetColorBackground - Recobra a cor de fundo do caráter no local de cursor atual. Estas cores normalmente são especificadas como 9 dígito numera onde o primeiro três especificam a contribuição vermelha, o próximo três a contribuição verde, e o último em três a contribuição azul. * GetColorText - Recobra a cor de texto do caráter no local de cursor atual. * GetColorField - Obtém o campo de cor à posição do cursor ativo. Um "campo de cor" é uma seção de informação (normalmente texto) isso tem uma combinação comum de cores, i.e., primeiro plano branco em fundo azul. O uso da combinação de cor deve ser contíguo. Porém, GetColorField é semelhante a GetField a função GetColorField está baseado em mudanças de cor, enquanto GetField está baseado em mudanças de atributo. * GetColorName - são comparados números de Cor para colorir nomes em um arquivo de JAWS chamado COLORS.INI. Esta função recobra o nome textual para o determinado número de cor ache em colors.ini. * GetControlAttributes - Lucros um valor de inteireza que indica os atributos do controle atual. * GetControlID - Determina o Controle ID para a janela de criança especificada em uma caixa de diálogo. A janela de interesse é especificada passando sua manivela de janela a isto funcione como um parâmetro. Cada caixa de lista, edite campo, botão de rádio, etc. em um diálogo um controle sem igual tem número de ID. Janelas de criança que contêm texto estático tudo têm o mesmo controle ID. * GetCurrentControlID - Determina o controle ID da janela de criança ativa em uma caixa de diálogo. Cada caixa de lista, edite campo, botão de rádio, etc. em um diálogo tem um sem igual controle número de ID. Janelas de criança que contêm texto estático tudo têm o mesmo controle ID. Esta função executa a mesma tarefa como GetControlID mas não requer uma manivela de janela como um parâmetro para falar isto qual janela de criança é de interesse. * GetControlName - adquire o nome do controle atual. * GetCurrentObject - Usa MSAA para obter o objeto com foco à posição de cursor ativa. * GetFocusObject - Usa MSAA para adquirir o objeto com foco. * GetObjectAtPoint - Usa MSAA para determinar o objeto a um jogo de coordenadas de X/Y. * GetCurrentScriptKeyName - Recobra o nome da chave invocava o atualmente script ativo. * GetCurrentWindow - Determina a manivela de janela para a janela que contém o cursor ativo. Em contraste, o GetFocus funcionam usa um processo analítico para ache a janela que atualmente tem o foco embora o qual cursor é ativo. * GetFocus - Obtém a manivela de janela para a janela que tem "o foco." Sempre busca achar o cursor de PC ou artigo realçado que têm o foco. Sim não leve em conta. Em contraste, a função de GetCurrentWindow é menos sofisticada. Obtém a manivela simplesmente para a janela dentro o qual o cursor ativo fica situado. * GetCursorCol - Determina a posição horizontal ou coluna onde o cursor ativo fica situado. Devolve uma inteireza que pode ser falada com o SayInteger função de script. * GetCursorRow - Determina a posição vertical ou fila onde o cursor ativo fica situado. Devolve uma inteireza que pode ser falada pelo script de SayInteger função. * GetCursorShape - Adquire a forma atual do cursor de rato * GetDefaultButtonName - Identifica o botão de falta em uma caixa de diálogo. Este é o botão que será escolhido quando ENTRA é apertado. * GetDefaultJcfOption - Determina o valor de uma opção especificada no falta JAWS configuração arquivo. Estes são valores como verbosidade de usuário ou eco digitando comece o Gerente de Configuração. * GetJCFOption - Determina o valor de uma opção de Gerente de Configuração especificada no arquivo de configuração de JAWS para a aplicação ativa, se qualquer. * GetJFWSerialNumber - Recobra o número de série para a cópia atualmente-corrente de JAWS. * GetDialogPageName - Se o cursor ativo estiver dentro de um diálogo de multi-página, recobra o nome da página atual. * GetDialogStaticText - Adquire o texto estático em uma caixa de diálogo. * GetFileDate - Usado adquirir a última data modificada de um arquivo particular. * GetFirstChild - Determina a primeira janela de criança que pode ter sido criada por uma janela de pai específica. Esta função é útil quando você desejar mover tabixo por a pilha de manivelas de janela para achar as crianças de sua janela começando. * GetParent - Move para cima pela pilha de janela achar o pai da janela de criança especificada. Pode, assim, seja usado para Determinar qual janela criou um especificou janela de criança. Por exemplo, quando uns estouros de caixa de diálogo para cima, poderia ser usado para determinar a manivela de janela da janela que criou a caixa de diálogo. Pode ser usado mover para cima por uma lista de manivelas de janela para adquirir a uma janela específica. * GetFirstWindow - Provê a manivela para a primeira janela à que é o mesmo lógico (a criança) nível como uma manivela de janela especificada. É usado para adquirir ao começo ponto de umas séries de janelas ao mesmo nível lógico. * GetNextWindow - Semelhante a GetFirstWindow, mas provê a próxima manivela de janela em umas séries de manivelas de janela que são tudo ao mesmo nível lógico. É mova por uma lista de manivelas de janela. * GetPriorWindow - Semelhante a GetFirstWindow, mas provê a manivela de janela anterior em umas séries de manivelas de janela ao mesmo nível lógico. É usado para mover por uma lista de manivelas de janela. * GetForegroundWindow - Recobra a manivela à janela de Primeiro plano atual. Esta geralmente é a janela principal da aplicação ativa mas às vezes pode ser a manivela de uma caixa de diálogo. Esta função é marginalmente mais rápida que GetAppMainWindow. * GetFocusRect - Adquire tudo das coordenadas de um retângulo de foco. * GetFocusRectBottom - Adquire as coordenadas da extremidade de fundo de um retângulo de foco. * GetFocusRectLeft - Adquire as coordenadas da extremidade esquerda de um retângulo focalizado. * GetFocusRectRight - Adquire as coordenadas da extremidade certa de um retângulo de foco. * GetFocusRectTop - Adquire as coordenadas da extremidade de topo de um retângulo de foco. * GetFromStartOfLine - Recobra texto na linha atual que fica à esquerda situado do cursor ativo. * GetToEndOfLine - Recobra texto na linha atual que fica à direita situado do cursor atual. * GetGraphicID - Adquire o ID associado com o gráfico debaixo do cursor atual. Se esta função falhar, então o ponteiro não é posicionado em um local válido no gráfico. Passando ao centro dos aumentos gráficos o sucesso desta chamada. * GetGroupBoxName - Adquire o nome da caixa de Grupo atual. * GetHTMLFrameCount - Adquire o número de armações de HTML apresente na página de teia atual. * GetHotKey - Recobra o primeiro caráter sublinhado no pedaço grosso de texto no qual o cursor ativo é posicionado. Isto é especialmente útil em cardápios e diálogo caixas onde uma chave de acelerador para um artigo particular esteve definida e exibiu na tela como uma carta sublinhada no nome do controle. * GetItemRect - Adquire o retângulo saltando que cerca o artigo especificado ou artigos. Podem ser combinados artigos usando o bitwise (|) o operador. Quando dois ou mais artigos é combinado, o retângulo resultante inclui tudo dos artigos. * GetJAWSDirectory - Recobra o caminho cheio ao diretório no qual JAWS estão correndo. * GetJAWSHelpDirectory - Recobra atualmente em uso o caminho cheio ao diretório de ajuda de JAWS. Isto depende em qual idioma está sendo usado. * GetJAWSSettingsDirectory - Recobra atualmente em uso o caminho cheio ao diretório de colocações de JAWS. Isto depende em qual idioma está sendo usado. * GetLineTop - Determina o local de pixel vertical do topo do caráter mais alto da linha na qual o cursor atual é posicionado. Desde o cursor posição informada por JAWS está baseado na linha base de caráter, esta função é o único modo de determinar como alto para cima uma linha de texto estende. * GetLinkCount - Adquire o número de presente de ligações na página de teia atual * GetJAWSUserName - Recobra o nome do usuário anotado em JAWS atualmente. Se este exemplo de JAWS não for nenhuma rede atento, então a função devolverá um nul amarre, "". * GetJFWVersion - Usado adquirir a versão do atualmente JAWS correntes. Pode ser usado para assegurar que uma função só é chamada em versões de JAWS que apóiam isto. * GetLine - Cópias o texto da linha onde o cursor ativo é posicionado. O texto copiado pode ser usado então através de outras funções de script. * GetObject - com certeza aplicações (por exemplo, Internet Explorer e Microsoft Office) é possível JAWS obterem informação diretamente daquela aplicação em lugar de confiar em o que é exibido na tela. Fazer isto, necessidades de JAWS um lugar para ir adquirir aquela informação e um tipo de "mapa de estrada" para falar isto onde olhar. O mapa de estrada é chamado um ponteiro de objeto, e o lugar dirige JAWS para é chamado um objeto de automatização para aquela aplicação. Há vários modos de obtenção tal um ponteiro de objeto para este propósito, não tudo dos quais trtablha com todas as aplicações. Um tal método é GetObject. GetObject fixa um ponteiro para um preexistindo objeto de automatização. JAWS podem examinar aquele objeto de automatização então para adquirir as informações precisa. A função de GetObject é semelhante ao CreateObject funcione, a não ser que GetObject cria um ponteiro a um objeto de automatização que já existe considerando que CreatObject também cria o objeto de automatização para a aplicação. * GetObjectName - Lucros o nome do objeto à posição do cursor ativo. Se o Cursor de Pc for ativo, o nome do objeto com foco é devolvido. Caso contrário, o nome do objeto à posição do cursor ativo é devolvido. O valor é devolvido como um fio. * GetObjectRect - Recobra o retângulo de foco que cerca o objeto à posição do cursor ativo. Devolva verdadeiro se o objeto tem um retângulo de foco, falso caso contrário. Esta função leva quatro parâmetros de inteireza, Esquerda, direito, topo e fundo. Declare, mas não inicialize, as variáveis de inteireza para estes parâmetros, como eles são passados através de referência. * GetObjectState - Obtém e volta para o estado do determinado objeto. Se o cursor de PC for ativo, para o estado do objeto com foco é voltado. Caso contrário, o para estado do objeto à posição do cursor ativo é voltado * GetObjectType - Recobra o tipo do objeto localizado no local do cursor atual. Porque o tipo é um fio que difere por idiomas, esta função, só deveria ser usado quando o objetivo for falar o tipo do objeto. GetObjectTypeCode deveria ser usado ao invés em todas as declarações condicionais porque provê um idioma solução independente. * GetObjectTypeCode - Recobra o código de tipo numérico do objeto localizado no local do cursor atual. Constantes para estes digitam codifica tudo comece com WT_ e está definido em HJCONST.JSH. Os valores numéricos são o mesmo para todos os idiomas de JAWS. Usando esta função em todas as declarações condicionais em vez de usar GetObjectType assegura que estas declarações funcionarão sem mudança em idiomas múltiplos. * GetObjectValue - Lucros o valor do objeto à posição do cursor ativo. Se o Cursor de Pc for ativo, o valor do objeto com foco é devolvido. Caso contrário, o valor do objeto à posição do cursor ativo é devolvido. O valor é devolvido como um fio. * GetProgramVersion - Esta função devolve a versão principal de uma aplicação. Por exemplo, se a versão cheia fosse 3.00.62, GetProgramVersion devolveria 3. * GetRealWindow - Move para cima pela lista de manivelas de janela à procura de uma "real janela." Uma real janela é um que tem um título. * GetRestriction - Adquire o valor de restrição pelo cursor atual. * GetRestrictionName - pode ser usado para falar o nível atual de restrição para o cursor ativo. Para esta função deve ser proporcionada um parâmetro que é o nível atual de restrição. Este valor pode ser obtido com a função, GetRestriction. * GetScreenEcho - Obtém a colocação de eco de tela atual. O tela eco fixando determina a quantia de informação que será lida como a informação é exibido no topo da escrivaninha. A função de NewTextEvent confere freqüentemente a colocação para eco de tela antes de decidir quanta informação para falar. * GetScriptDescription - Recobra a descrição de um script especificado. * GetScriptSynopsis - Recobra a sinopse de um script especificado. * GetScriptFileName - Recobra o nome de um atualmente falta ativa ou arquivo de script de aplicação. Para o arquivo de script de aplicação, isto está igual à aplicação nome de arquivo executável, menos nesses casos onde o arquivo de script de aplicação originalmente carregado se substituiu com outro por meio de SwitchToScriptFile. Semelhantemente, para o arquivo de script de falta ativo, este é o nome especificado em JFW.INI, menos nesses casos onde o arquivo original se substituiu por meio de SwitchToScriptFile. * GetScriptKeyName - Recobra o nome da chave preso ao script especificado. Esta função é usada para criar JAWS principalmente ajuda de chave quente arquiva desde que eles vão então continua informando a chave correta até mesmo se a chave quente é mudada. * GetScriptKeyNames - Recobra os nomes de tudo das chaves nomeados ao script especificado. Estes nomes são colocados em uma lista delimitada com o ser de nomes separado (delimitou) por \ r\n. * GetSelectedText - Recobra o texto atualmente-selecionado como um fio. * GetSynthPitchRange - Recobra o mínimo e colocações de lance de máximo para o sintetizador atual e os nomeia a parâmetros levados por referência. * GetSynthRateRange - Recobra o mínimo e colocações de taxa de máximo para o sintetizador atual e os nomeia a parâmetros levados por referência. * GetSynthVolumeRange - Recobra o mínimo e colocações de volume de máximo para o sintetizador atual e os nomeia a parâmetros levados por referência. * GetTextBetween - adquire o texto entre dois pontos horizontais na tela na mesma linha onde o cursor fica situado. Esta função pode ser usada para falar ou parte de captura de uma linha. * GetTextInFocusRects - Recobra os conteúdos de todos os retângulos de foco em um único pára-choque. * GetTextInFrame - Recobra o texto dentro de uma armação especificada. * GetTextInRect - Adquire o texto contido dentro do retângulo especificado * GetTopLevelWindow - UM topo janela nivelada é o primeiro ou janela de pai nivelada mais alta que geraram a janela de criança da qual uma procura está sendo começada. Esta função achados o topo janela nivelada com o janela classe and/or janela nome especificado. Se você não desejar procurar baseado em um dos argumentos, use "" para aquele argumento. * GetTreeViewLevel - Obtém o recue nível do artigo em uma visão de árvore que tem foco. A raiz da árvore tem o nivelado 0. * GetVerbosity - Usado obter a colocação atual para verbosidade. Devolve um valor constante para indicar a colocação: Meios de "NOVATO" falam informação de máximo, Meios de "INTERMEDIÁRIO" falam uma quantia moderada de informação, e meios "AVANÇADOS" falam uma quantia mínima de informação. Estes valores podem ser usados Se-então-outro dentro declarações. * GetVoiceParameters - Recobra os parâmetros para o contexto de voz especificado. Estes incluem Volume, Taxa, Lance, Pontuação e pessoa. * SetVoiceParameters - Jogos os parâmetros para o contexto de voz especificado. Estes incluem Volume, Taxa, Lance, Pontuação e pessoa. * GetVoicePerson - Recobra a colocação de nome de pessoa para o nome de contexto de voz especificado. * SetVoicePerson - Jogos o nome de pessoa de uma voz especificado pelo nome de contexto de voz a uma colocação de pessoa especificada. * GetVoicePitch - Recobra a colocação de lance atual para o nome de contexto de voz especificado. * SetVoicePitch - Jogos o lance de uma voz especificado pelo nome de contexto de voz a um valor especificado. * GetVoicePunctuation - Recobra a pontuação atual colocação nivelada para o nome de contexto de voz especificado. * SetVoicePunctuation - Jogos o nível de pontuação de uma voz especificado pelo nome de contexto de voz a um valor especificado. * GetVoiceRate - Recobra a colocação de taxa atual para o nome de contexto de voz especificado. * SetVoiceRate - Jogos a taxa de uma voz especificada pelo nome de contexto de voz a um valor especificado. * GetVoiceVolume - Recobra o volume atual que fixa para o nome de contexto de voz especificado. * SetVoiceVolume - Jogos o volume de uma voz especificado pelo nome de contexto de voz a um valor especificado. * GetWindowAtPoint - Adquire a manivela da janela ao ponto especificado. Por exemplo, isto pode ser usado com MouseMovedEvent para adquirir a manivela do janela conter o ponteiro de Rato. * GetWindowClass - Obtém o nome de classe de janela de uma janela. A maioria das janelas standards (non janelas de SDM) tenha um nome de classe de janela e um nome de tipo de janela. Classe de janela nomes são geralmente sem igual a janelas específicas em aplicações específicas. * GetWindowBottom - Adquire a coordenada de tela para o fundo da janela de interesse. * GetWindowLeft - Adquire a coordenada de tela para a extremidade esquerda da janela de interesse. * GetWindowRight - Adquire a coordenada de tela para a extremidade certa da janela de interesse. * GetWindowTop - Adquire a coordenada de tela para o topo da janela de interesse. * GetWindowName - Obtém o título da janela especificada, como para uma janela de Aplicação principal, caixa de diálogo, ou janela de documento. Todas as janelas não têm títulos. * GetWindowsOS - Provê informação sobre a qual sistema operacional está sendo usado. * GetWindowRect - Adquire o retângulo saltando da janela cuja manivela é especificada. * GetWindowsSystemDirectory - Lucros o caminho para o Windows diretório De sistema como um fio. * GetWindowText - Recobra qualquer um tudo do texto na janela especificada ou há pouco o texto realçado. * GetWindowTextEx - Como com GetWindowText, recobra qualquer um tudo do texto na janela especificada ou há pouco o texto realçado. Porém, também pode recobrar ou ignora o texto em janelas de criança. * GetWindowType - Obtém o nome de tipo de janela de uma janela. A maioria das janelas standards (non janelas de SDM) tenha um nome de tipo de janela e um nome de classe de janela. Exemplos de tipos de janela são: texto estático, edite campo, confira caixa, botão de rádio, etc. Os mesmos nomes de tipo de Janela são geralmente usados em muitas aplicações de Windows diferentes. * GetWindowTypeCode - Obtém o janela tipo código número para a janela especificada. Estes números são o mesmo para o inglês e non versões inglesas de JAWS. Muitos números de tipo de janela têm valores constantes nomeados a eles no arquivo HJCONST.JSH. O GetWindowType funcionam devolve estas constantes em vez do tipo de janela número. * GetWindowSubtypeCode - Obtém o janela subtipo código número para a janela especificada. Esta função é bastante semelhante a GetWindowTypeCode, mas tentativas para ser até mesmo mais específico. Se não há nenhuma mais informação específica disponível, lucros a mesma coisa como GetWindowTypeCode. por exemplo Chamando GetWindowTypeCode que usa o manivela de janela para o Taskbar devolveria WT_TABCONTROL, e chamando GetWindowSubtypeCode devolveriam WT_TASKBAR (um tipo mais específico de controle de tab). (Veja o documentação para GetWindowTypeCode para mais detalhes.) * GetWord - Fica sabendo a onde o cursor ativo é posicionado. O texto assim obteve pode ser usado então através de outras funções de script. * GraphicsEnumerate - Chama uma função usuário-especificada para todo gráfico contido dentro de uma janela específica e então passa a esta função as coordenadas de cada gráfico. A função é pedida cada gráfico até que tudo foram enumerados ou até os lucros de função usuário-especificados que a enumeração não deveria continuar. * GraphicsListHelper - Ajuda para o GraphicsList a funcionar criando um fio delimitado lista de rótulos de gráficos. * HasFocusRect - Determina se a janela especificada tiver um retângulo de foco. Uma declaração de TrackFocusRect=1 deveria ser somada o [OSM] seção da aplicação JCF arquivam para esta função para trtablhar corretamente. * HasTitleBar - Determina se uma janela tem uma barra de título. Se a janela tiver uma barra de título, então a função devolve um valor constante de VERDADEIRO. Se a janela faz não tenha uma barra de título, então um valor constante de FALSO é devolvido. Windows que tipicamente tem barras de título é caixas de diálogo e janelas de aplicação principais. * IE4GetCurrentDocument - Lucros um objeto que representa o HTML documenta em uma determinada janela de browser. O objeto de documento pode ser usado para recobrar informação sobre o documento, examinar e modificar os elementos de HTML e texto dentro do documento, e processar eventos. Esta função obtém o objeto de documento do documente na janela atual. * Se - O Se o operador marca o começo de um Se-então - Outro declaração. Uma declaração completamente formulada inclui: "Se", "Então", "Outro", e "EndIf." O script funções entre as que se aparecem o Se e o De então é usado para avaliar se uma certa condição está presente. Por exemplo, enlate um certo caráter de gráficos seja ache na janela ativa? Toda declaração tem que incluir "Se", "Então", e "EndIf." O "Outro" é opcional. * IniReadInteger - Lê um valor de inteireza de um arquivo de estilo de ini. Um arquivo de estilo de ini é um arquivo que contém seções de chaves com os valores deles/delas. JCF arquiva como usado em JAWS é ini arquiva, e as características que são fixo nas várias seções destes arquivos são as chaves. Esta função é usada para obter a colocação atual para chaves de inteireza. * IniWriteInteger - Escreve um valor de inteireza a um arquivo de estilo de ini. Um arquivo de estilo de ini é um arquivo que contém seções de chaves com os valores deles/delas. JCF arquiva como usado em JAWS é ini arquiva, e as características que são fixo nas várias seções destes arquivos são as chaves. Esta função é usada para mudar a colocação atual para chaves de inteireza. * IniReadString - Lê um valor de fio de um arquivo de estilo de ini. Um arquivo de estilo de ini é um arquivo que contém seções de chaves com os valores deles/delas. JCF arquiva como usado dentro JAWS são ini arquiva, e as características que são fixo nas várias seções destes arquivos são as chaves. Esta função é usada para obter a colocação atual para fio chaves. * IniWriteString - Escreve um valor de fio a um arquivo de estilo de ini. Um arquivo de estilo de ini é um arquivo que contém seções de chaves com os valores deles/delas. JCF arquiva como usado dentro JAWS são ini arquiva, e as características que são fixo nas várias seções destes arquivos são as chaves. Esta função é usada para mudar a colocação atual para fio chaves. * IniRemoveKey - Remove uma chave e seu valor de um arquivo de estilo de ini. Um arquivo de estilo de ini é um arquivo que contém seções de chaves com os valores deles/delas. JCF arquiva como usado em JAWS é ini arquiva, e as características que são fixo nas várias seções destes arquivos são as chaves. Esta função é usada para apagar uma chave e sua colocação de um arquivo de ini. * IniRemoveSection - remove uma seção inteira de um arquivo de estilo de ini. Um arquivo de estilo de ini é um arquivo que contém seções de chaves com os valores deles/delas. JCF arquiva como usado em JAWS é ini arquiva, e as características que são fixo nas várias seções destes arquivos são as chaves. Esta função é usada para apagar uma seção inteira de um arquivo de ini. * InHJDialog - Confere para ver se um dos diálogos gerasse através de JAWS é ativo. Estes incluem JAWSFind, GraphicsLabeler, DLGSelectItemInList, e DLGSysTray. * InTable - Usado determinar se o cursor ativo está atualmente em uma mesa. * IntToString - Converte um valor de inteireza a um fio e lucros o valor de fio. Por exemplo, isto poderia ser útil quando a pessoa desejar usar uma inteireza como parte de um Say declaração. Convertendo a inteireza a um fio permite falar o valor como parte do Say declaração e evita a necessidade por um SayInteger separado declaração. * InvisibleCursor - Ativa o cursor Invisível e desativa outros cursores. O ponteiro de rato não remove o Cursor Invisível, e pode ser usado em situações onde movimentos do cursor de JAWS e ponteiro de rato podem fazer a exibição de janela mudar. * IsBrailleCursor - Determina se o cursor de Braile é ativo. Pode ser usado dentro um Se-então-outro declaração para verificar o estado ativo de um cursor. * IsInvisibleCursor - Usado determinar se o cursor Invisível é ativo. Pode ser usado dentro um Se-então-outro declaração para verificar o estado ativo do invisível cursor. * IsJAWSCursor - Determina se o cursor de JAWS é ativo. Pode ser usado dentro um Se-então-outro declaração para verificar o estado ativo do cursor de JAWS. * IsPCCursor - Determina se o cursor de PC é ativo. Pode ser usado dentro um Se-então-outro declaração para verificar o estado ativo do cursor de PC. * IsVirtualPCCursor - Testes para ver se o cursor de PC virtual é habilitado e se está sendo usado para navegar dentro da janela com foco. Pode ser usado dentro um Se-então-outro declaração para verificar o estado ativo do cursor virtual. * IsJFWInstall - Confere para ver se JAWS estiverem correndo em modo de Instalação (com o / instale bandeira). * IsKeyWaiting - Indica se houver outras chaves no pára-choque que precisa ser processado. * IsLeftButtonDown - Confere para ver se o botão de rato esquerdo é fechado tabixo. * IsRightButtonDown - Confere para ver se o botão de rato certo é fechado tabixo. * IsMultiPageDialog - Confere para ver se o cursor ativo é posicionado dentro de uma caixa de diálogo de multi-página. * IsPointInWindow - Compara as coordenadas de pixel especificadas com os limites de janela da janela que é manivela é indicado no hwnd de parâmetro para determinar se está dentro dos limites daquela janela. * IsSameScript - Determina se o script atual foi chamado dois ou mais vezes seguidos sem qualquer script interveniente que é chamado e sem mais que 500 milissegundos entre cada chamada. Usando esta função permite um script para agir, enquanto dependendo do número de tempos sucessivos diferentemente foi chamado. (Um script é chamado sempre que uma chave nomeou a isto foi apertado.) * IsSpeechOff - Usado determinar se o sintetizador é emudecido. * IsWindowDisabled - Confere o estado da janela atual ou controle. Lucros FALSO se a janela é ativa; VERDADEIRO se a janela é inválida. * IsWindowObscured - Confere para ver se esta janela estiver coberta por qualquer outros e então não pode ser completamente visto. * IsWindowVisible - Confere o estado visual da janela. Esta função devolverá retifica até mesmo se a janela estiver completamente coberta através de outras janelas. Veja função IsWindowObscured para um modo para descobrir se uma janela particular está coberta. Lucros RETIFICAM se a Janela é visível na tela, FALSO se a janela não é visível na tela. * JAWSCursor - Ativa o cursor de JAWS e desativa todos os outros cursores. * JAWSEnd - Move as JAWS ou cursor Invisível, se ativo, para o fim da linha. Se o cursor de PC for ativo, JAWS enviam um FIM ao sistema. O resultado é controlado pela aplicação ativa. * JAWSHome - Move o cursor de JAWS, se ativo, para o começo da linha. Se o cursor de PC for ativo, JAWS enviam uma CASA ao sistema. O resultado é controlado pela aplicação ativa. * JAWSPageDown - Move o cursor de JAWS, se ativo, para o fundo da janela, mas não move partiu ou direito. Se o cursor de PC for ativo, JAWS enviam uma PÁGINA Até o sistema. O resultado é controlado pela aplicação ativa. * JAWSPageUp - Move o cursor de JAWS, se ativo, para o topo da janela, mas não move partiu ou direito. Se o cursor de PC for ativo, JAWS enviam uma PÁGINA PARA CIMA para o sistema. O resultado é controlado pela aplicação ativa. * JAWSFind - Invoca as JAWS Acham diálogo e então Procuras a tela visível para achar o texto ou gráfico você entra. O rótulo de texto do gráfico é usado para procuras. * JAWSFindNext - Procuras a tela visível para a próxima ocorrência do texto ou gráfico por último entrada no Diálogo de Achado de JAWS. * JAWSWindow - Invoca a janela de JAWS, de em qualquer outro lugar em Windows, assim você pode ler a ajuda on-line, sintetizadores de mudança, ou pode executar qualquer outra função de janela de JAWS. * LeftMouseButton - Esta função executará a mesma ação como clicando o botão de rato esquerdo no rato físico. Invocando isto duas vezes renderão um trinco dobro. A posição do cursor de JAWS está igual ao ponteiro de rato. * LeftMouseButtonLock - Fechaduras o botão de rato esquerdo até arraste artigos pela tela ou execute qualquer outra função aplicação-específica. Invocando isto novamente vão destranque o botão de rato esquerdo para derrubar o artigo. * O Max - Esta função é usada para comparar a inteirezas e lucros o maior dos dois. * Min - Esta função é usada para comparar duas inteirezas e lucros o menos dos dois. * MenusActive - Determina se um cardápio é atualmente ativo. Devolve um valor constante de "ATIVO" indicar um cardápio é ativo e um valor de "INATIVO" para indique que um cardápio não é ativo. Estas constantes podem ser usadas em Se-então-outro declarações. * MinimizeAllApps - Minimiza todas as janelas de aplicação, assim o Topo da escrivaninha adquire o foco e está visualmente claro. * MouseDown - Move o rato para baixo pelo número de pixels colocado entre os parênteses depois do nome de função. * MouseLeft - Move o rato partido pelo número de pixels colocado entre os parênteses depois do nome de função. * MouseRight - Move o direito de rato pelo número de pixels colocado entre os parênteses depois do nome de função. * MouseUp - Move o rato acima pelo número de pixels colocado entre os parênteses depois do nome de função. * MoveTo - Move o cursor ativo ao X especificado e Y coordena na tela. * MoveToControl - move o cursor ativo a um controle específico dentro de uma janela. Embora principalmente útil dentro de caixas de diálogo, a função pode ser usada em qualquer janela onde controles de criança têm identificadores sem igual obteve com GetControlID. Também pode ser usado em janelas de SDM com os identificadores obteve usando SDMGetFirstControl, SDMGetLastControl, SDMGetFocus, etc. Se o cursor de PC é em que quando esta função é chamada, o cursor de JAWS é virado automaticamente em. Caso contrário o cursor ativo é usado. * MoveToFrame - Move o cursor ativo ao topo deixou canto da Armação especificada. Se o cursor de PC é ativo quando esta função é usada, então o cursor de JAWS, é ativado e é movido à posição nova, caso contrário o cursor ativo é movido. * MoveToGraphic - Move o cursor de JAWS, cursor Invisível, ou cursor de Braile em uma direção específica achar um símbolo gráfico na janela ativa. O gráfico é procurado por seu nome de texto. * MoveToWindow - Move o cursor ativo à janela especificada. Se a janela contiver texto, então o cursor é posicionado no primeiro caráter. Caso contrário, é posicionado ao centro da janela. Se o cursor de PC é ativo que quando esta função for usada, então o cursor de JAWS é ativado e é movido à posição nova. * MSOGetMenuBarObject - Adquire o objeto de barra de Cardápio em MS Office 97 aplicações. * NextCharacter - Executa uma versão especial de ` o {SETA CERTA} ou próximo comando de teclado de caráter. Quando o cursor de PC for ativo, JAWS permitem a aplicação mover o cursor. Quando outros cursores forem ativos, então JAWS tentam mover o cursor ao próximo caráter ou gráfico acha à direita da corrente do cursor local. Falar o caráter no local novo, coloque uma função de SayCharacter depois da função de NextCharacter. * NextChunk - Move o cursor ativo ao próximo pedaço grosso de texto. Um pedaço grosso de texto é uma seção ou bloco de texto que é escrito uma vez à tela, i.e., com uma chamada de função. Isto indicaria uma frase ou descrição que deveriam ser faladas como uma unidade tipicamente. Isto é útil lendo blocos de texto estático, lembretes de controle, e nomes de campo. * NextLine - Move o cursor ativo até a próxima linha. Em muitas situações, Windows não exibe informação em filas horizontais perfeitas, e o cursor pode não mover uma distância uniforme cada tempo esta função é usada. Falar a informação imediatamente depois que a função de NextLine for usada, coloque uma função de SayLine depois que a função de NextLine. * NextNonLink - Posições o cursor Virtual ao próximo bloco grande de texto de nonlink. Esta função é freqüentemente útil para mover texto de anúncio passado ou repetido ligações em uma página de teia. * NextParagraph - Move o cursor ativo ao começo do próximo parágrafo. Se o cursor de PC é ativo, e o próximo parágrafo já não é visível, então, texto na janela enrolará para trazer isto em visão automaticamente. * NextSentence - Move o cursor ativo ao começo da próxima oração. Se o cursor de PC é ativo, e a próxima oração já não é visível, então texto, na janela enrolarão trazer isto em visão automaticamente. * NextWord - Executa uma versão especial do {SETA de CONTROL+RIGHT} ou próximo comando de teclado de palavra. Quando o cursor de PC for ativo, JAWS permitem a aplicação para mova o cursor. Quando outros cursores forem ativos, então JAWS tentam mover o cursor à próxima palavra ou gráfico acha à direita do local atual do cursor. Falar a palavra no local de cursor novo, coloque uma função de SayWord depois da função de NextWord. * Não - O Não o operador inverte a pergunta perguntada por um Se-então-outro declaração. É colocado imediatamente depois o "Se" no Se-então-outro declaração. Diz, "Se a condição especificada não estiver presente, então execute as ações seguintes." * PassKeyThrough - Se esta função é invocada, JAWS não usarão ou processarão a chave seguinte. Será enviado diretamente à aplicação, como se JAWS não fossem carregado. Isto é muito útil se você tiver um conflito fundamental. * Pausa - Paradas o processo de um script de forma que outras aplicações pode completar tarefas. Quando uma função de Pausa é colocada em um script, rendimentos de JAWS para as necessidades de tempo, de outras aplicações. Uma vez outras aplicações foram determinadas a oportunidade para usar tempo de processo, então currículos de JAWS o script. A função de Pausa executa diferentemente da Função de Demora que pára script que processa para uma quantia especificada de tempo, independente de se a aplicação é processo terminado ou não. * PCCursor - Ativa o cursor de PC e desativa todos os outros cursores. * PlaySound - Jogos um arquivo de onda pelo sistema de som de computador. Requer um parâmetro que especifica o filename de onda. Se um caminho completo não é especificado, JAWS procurarão o caminho para o arquivo. * PriorCharacter - Executa uma versão especial do {SETA ESQUERDA} ou comando de teclado de caráter anterior. Quando o cursor de PC for ativo, JAWS permitem a aplicação mover o cursor. Quando outros cursores forem ativos, JAWS tentam mover o cursor ao caráter anterior ou gráfico acha à esquerda da corrente do cursor local. Falar a informação no local de cursor novo, coloque uma função de SayCharacter depois da função de PriorCharacter. * PriorChunk - Move o cursor ativo ao pedaço grosso anterior. Um pedaço grosso de texto é uma seção ou bloco de texto que é escrito uma vez à tela, i.e., com um chamada de função. Isto indicaria uma frase ou descrição que deveriam ser faladas como uma unidade tipicamente. Isto é útil lendo blocos de texto estático, controle, lembretes, e nomes de campo. * PriorLine - Executa uma versão especial do {PARA CIMA SETA} comando de teclado. Quando o cursor de PC for ativo, JAWS permitem a aplicação para mover o cursor. Quando outros cursores são ativos, então JAWS tentam mover o cursor até a linha sobre sua posição atual. Falar a linha de informação no local novo, lugar, uma função de SayLine depois da função de PriorLine. * PriorParagraph - Move o cursor ativo ao começo do parágrafo anterior. Se o cursor de PC é ativo, e o parágrafo anterior já não é visível, então texto na janela enrolará para trazer isto em visão automaticamente. * PriorSentence - Move o cursor ativo ao começo da oração anterior. Se o cursor de PC é ativo, e a oração anterior já não é visível, então, texto na janela enrolará para trazer isto em visão automaticamente. * PriorWord - Executa uma versão especial do {SETA de CONTROL+LEFT} ou comando de teclado de palavra anterior. Quando o cursor de PC for ativo, JAWS permitem a aplicação para mova o cursor. Quando outros cursores forem ativos, JAWS tentam mover o cursor à palavra anterior ou gráfico acha à esquerda do local atual do cursor. Falar a palavra no local novo, coloque uma função de SayWord depois da função de PriorWord. * ProcessNewText - Esta função é usada para forçar uma chamada de NewTextEvent. O NewTextEventFunction normalmente é chamado só quando texto novo é escrito à tela. ProcessNewText pode ser útil se você precisar chamar NewTextEvent antes de FocusChangedEvent. * Refresque - Refresca a tela. Isto reescreve a informação às JAWS fora modelo de tela e pode ser usado para clarear dados de sobra da tela. * RefreshWindow - Refresca os conteúdos de uma janela e todas as janelas contidos dentro disto. Isto é muito mais rápido que refrescando a tela inteira. * RemoveHook - Remove uma função de gancho posta em lugar pela função de AddHook. Veja a seção em Funções de Gancho para mais informação. * ResetSynth - Reinitializes o sintetizador com o próprio volume, taxa, e colocações de lance. Devolva o sintetizador a normal se adquiriu fora de sync com JAWS. * RestoreCursor - Reativa o cursor que foi economizado quando a função de SaveCursor era por último usada. Se o cursor que é restabelecido é o cursor de JAWS, cursor Invisível, ou cursor de Braile, então o cursor também é devolvido a sua posição prévia no topo da escrivaninha. Se o cursor é atualmente em uso diferente do cursor que era em uso quando a função de SaveCursor era usada, então é desativado e o cursor prévio é reativado. * Retorno - O operador de retorno termina execução da função na qual se aparece e devolve controle (e o valor de expressão se determinado) para a chamada função. Para definir valores de retorno, o nome da função é precedido pelo tipo de retorno. Desde que um script não pode devolver um valor, um operador de Retorno que é usado, de dentro um script nunca deveria ser seguido por um valor. * RGBStringToColor - Converte um Fio de 9-dígito da forma "255255255" a um valor de cor. O fio de 9-dígito deve ser incluído em aspa. (neste caso, a cor seria branca.) São achados equivalents de cor no arquivo COLORS.INI. * RightMouseButton - Esta função executará a mesma ação como clicando o botão de rato certo no rato físico. Invocando isto duas vezes renderão um dobro trinco. A posição do cursor de JAWS está igual ao ponteiro de rato. * RightMouseButtonLock - Esta função fechará o botão de rato certo e permitirá o usuário para executar qualquer tal função requerida por uma aplicação. Invocando isto novamente destrancará o botão. * RouteBrailleToJAWS - Depósitos o cursor de Braile para a mesma posição como o Cursor de JAWS. * RouteBrailleToPC - Depósitos o cursor de Braile para a mesma posição como o cursor de PC. * RouteInvisibleToJAWS - Move o cursor Invisível ao local do cursor de JAWS e ativa o cursor Invisível. * RouteInvisibleToPC - Move o cursor Invisível ao local do cursor de PC e ativa o cursor Invisível. * RouteJAWSToBraille - Depósitos o cursor de JAWS de forma que isto está na mesma posição como o cursor de Braile. * RouteJAWSToInvisible - Move o cursor de JAWS ao local do cursor Invisível e ativa o cursor de JAWS. * RouteJAWSToPC - Depósitos o cursor de JAWS de forma que isto está na mesma posição como o cursor de PC. O cursor de JAWS normalmente é conectado ao ponteiro de rato, assim, quando esta função for usada, coloca o ponteiro de rato em cima do sinal de intercalação ou o cursor de seleção realçado, ou em qualquer outro tipo de ponteiro que é atualmente sendo usado. * RoutePCToBraille - Depósitos o cursor de PC de forma que isto está na mesma posição como o cursor de Braile. * RoutePcToInvisible - Depósitos o cursor de PC de forma que isto está na mesma posição como o cursor Invisível. * RoutePCToJAWS - Tenta mover o cursor de PC à posição do cursor de JAWS. Esta função está igual a um único trinco do botão de rato esquerdo que ensina que o Windows mova seu ponto de inserção à posição do ponteiro de rato. O uso próspero desta função é relacionado ao sistema operacional de Windows; há freqüentemente situações onde o Windows não pode mover o cursor de PC ao ponteiro de rato. * SaveCursor - Economiza o nome do cursor ativo. Se o cursor de JAWS, cursor Invisível, ou cursor de Braile está sendo usado, então a posição do cursor também é economizado. Scripts que usam o SaveCursor normalmente funcionam use o RestoreCursor funcionam depois no script. Se um RestoreCursor não for usado, JAWS executarão um automaticamente quando o script termina. * Say - Esta função fala um fio de texto, muito como o SayString funcione, mas tem um segundo parâmetro chamado um modo de produção. Estes modos de produção permitem o mensagem ser falado com um jogo particular de características de fala. É possível usar modos de produção separados para falar linhas de título, controles de diálogo, artigos de cardápio, etc, com vozes diferentes ou a níveis de verbosidade diferentes. Usando o SayMessage funcione ao invés, é possível nomear mensagens curtas e longas para muitos tipos de produção para JAWS Ajudam e outra informação. * SayActiveCursor - Diz o nome do cursor ativo e sua posição através de local de pixel. * SayAll - Diz toda a informação legível do ponto do cursor ativo para o fundo da janela. Se o cursor de PC é ativo, rolos de papel de JAWS a tela por rebaixando o cursor de PC. Se o cursor de JAWS for ativo, o resto da janela é erudito movendo o cursor de JAWS de cada vez tabixo uma linha. * SayCharacter - Lê o caráter ou símbolo de gráfico ao cursor ativo. Se o cursor de PC é ativo, olhares de JAWS para o sinal de intercalação visível ou a barra clara. Se o cursor de JAWS é ativo, fala o caráter ou gráfico ao ponteiro de rato. * SayCharacterPhonetic - Usa pronúncia especial rege para ler o caráter localizado à posição do cursor ativo. Assim, UM é alfa pronunciado, B bravo, etc. As associações entre caráter e as pronúncias fonéticas deles/delas são feitas dentro o [PhoneticSpell] seção de. arquivos de JCF. Quais palavras são usadas pode ser mudado pelo usuário, se desejou. * SayChunk - Fala o pedaço grosso de informação para a qual o cursor ativo está apontando. Um "pedaço grosso" é texto e informação de gráfico nas que foram escritas à tela uma única operação. Porém, SayChunk é semelhante a SayField que o SayField funcionam usa lógica para determinar o texto que será falado, enquanto SayChunk simplesmente leituras o texto no que foi armazenado o Fora Modelo de Tela como uma única unidade. * SayColor - Diz a cor ao cursor ativo. Usos o COLORS.INI para definir as cores do 9 dígito valores de RGB numéricos. Se você ouve números em vez de um nome de cor, acrescente aquela entrada ao arquivo de colors.ini e defina sua cor. * SayControl - Usado em caixas de diálogo falar os conteúdos de uma janela de criança junto com seu lembrete. Isto leituras editam campos, caixas de lista, conferem caixas, rádio abotoa, etc. * SayCurrentScriptKeyLabel - Fala o Nome Fundamental preso ao script atual, enquanto honrando ambos o eco de datilografia que fixa e o rótulo como definido em default.jcf. * SayCursorPos - Fala a fila e posição de coluna de um cursor. * SayField - Lê o campo de texto onde o cursor ativo está apontando. Um "campo de texto" é uma seção ou bloco de texto que tem um atributo comum, i.e., tipo negrito, sublinhado, itálicos, ou strikeout. O uso do atributo deve ser contíguo. O SayField funcionam usa lógica para determinar o texto que será falado, enquanto o SayChunk simplesmente funcionam lê o texto que foi armazenado nas JAWS Fora Modelo de Tela como uma única unidade. * SayFocusRect - Diz os conteúdos de um retângulo de foco. Lucros RETIFICAM se qualquer texto fosse falado, FALSO caso contrário. Uma declaração de TrackFocusRect=1 deveria ser somada o [OSM] seção do JCF da aplicação arquiva para esta função para trtablhar corretamente. * SayFocusRects - Diz os conteúdos de retângulos de foco. Se houver só um tal retângulo, isto é precisamente como SayFocusRect. Se há mais que um, isto, função diz os conteúdos de tudo deles, enquanto SayFocusRect diz só o primeiro. Uma declaração de TrackFocusRect=1 deveria ser somada o [OSM] seção do o JCF de aplicação arquivam para esta função para trtablhar corretamente. * SayFont - Fala o nome de fonte e classifica segundo o tamanho ao cursor ativo. * SayFrame - Fala os conteúdos da armação especificada. * SayFrameAtCursor - Todo o texto dentro dos limites da armação que contém o cursor ativo é falado. * SayFromCursor - Lê o texto do cursor para o fim da linha, inclusive o caráter atual. * SayToCursor - Lê o texto desde o começo da linha até o cursor, não inclusive o caráter atual. * SayInteger - Fala numérico, dados de inteireza, freqüentemente os conteúdos de uma variável de inteireza. * SayString - Fala dados de fio, normalmente ou os conteúdos de uma variável de fio ou uma mensagem específica. Se texto atual for usado, deveria ser colocado dentro de aspa dentro dos parênteses que seguem o nome de função. Se uma variável ou constante é usada, nenhum aspa deveria estar presente. É recomendado agora que a função de SayString seja evitada a favor da função de SayMessage (veja tabixo). * SayLine - Fala a linha atual. Se o cursor de PC é ativo, enquanto lendo serão restringidos ao artigo atual ou janela. Lendo caso contrário incluirão todos o texto em aproximadamente a mesma linha, até mesmo se está fora do artigo atual ou janela, a menos que Restrição de cursor de JAWS seja acesa. * SayMessage - Esta função leva mensagens curtas e longas providas como parâmetros e fala a mensagem apropriada baseado no tipo de produção especificado, também proveu como um parâmetro. Esta função é semelhante Dizer, a não ser que é possível nomear mensagens curtas e longas a muitos tipos de produção para JAWS Ajude e outra informação. É recomendado agora que a função de SayMessage seja usada em preferência à função de SayString. * SayObjectActiveItem - Diz o elemento ativo em certos controles. Por exemplo, em uma visão de lista, dirá o artigo selecionado. Em um cardápio, dirá o ativo artigo de cardápio. Em uma caixa de diálogo, dirá a tab selecionada. * SayObjectTypeAndText - Fala o nome e tipo do objeto localizados no local do cursor atual. Esta função é semelhante a SayWindowTypeAndText exclua que é mais específico. Se uma janela particular contiver objetos múltiplos, esta função falará informação sobre o um ao cursor, enquanto SayWindowTypeAndText falará informação sobre a janela incluindo. Se a janela não contiver objetos múltiplos, então as funções operam identicamente. Quando esta função é usado, marca o texto lê de forma que o SayNonHighlightedText e funções de SayHighlightedText não repete a mesma informação quando eles são ativados. * SayParagraph - Lê o parágrafo atual desde o princípio. * SaySentence - Lê a oração que contém o caráter no qual o cursor ativo é posicionado. * SayTextBetween - Diz o texto entre dois pontos horizontais na tela na mesma linha como o cursor ativo. * SayToBottom - Lê a janela ativa da posição do cursor ativo para o fundo da janela. Os cursores não movem como texto é erudito, a janela, não enrolará para exibir texto adicional. * SayUsingVoice - Fala um fio de texto que usa um jogo específico de características de fala chamado contexto de voz. * SayWindow - Lê a janela especificada. Isto qualquer leituras realçaram texto ou todo o texto na janela, enquanto dependendo dos parâmetros entraram pelo usuário. * SayWindowTypeAndText - Lê umas séries especificadas de informação de uma janela. Lê o título de janela (quando a pessoa está presente), o tipo de janela, os conteúdos em a janela, e provê informação relacionada sobre a opção de diálogo atual. Quando esta função for usada, marca o texto que lê de forma que o SayNonHighlightedText e funções de SayHighlightedText não repetem a mesma informação quando eles são ativados. * SayWord - Lê a palavra ou símbolo gráfico ao cursor ativo. Se o cursor de PC é ativo, olhares de JAWS para o sinal de intercalação visível ou a barra clara. Se o cursor de JAWS é ativo, fala a palavra ou gráfico ao ponteiro de rato. * ScheduleFunction - Corre um usuário definiu função em um período fixo de tempo. Esta Função é útil quando você quiser executar uma tarefa e então inspecionar os resultados mais tarde. Uma vez esta função é usada, você pode chamar UnscheduleFunction para causar o usuário definido evento para não correr. * UnscheduleFunction - Usado cancelar uma chamada de ScheduleFunction. * ScreenEcho - Pinos de madeira o eco de tela entre os três possíveis estados. A falta é Realçada que fala texto só realçado quando se aparecer na tela. Tudo falam todo o texto que é escrito à tela, e Nenhum não fala nenhum do texto. * ScreenGetHeight - Adquire a altura da tela em pixels. * ScreenGetWidth - Adquire a largura da tela em pixels. * SDMGetCurrentControl - Recobra o ID do controle no qual o cursor ativo é posicionado dentro de uma SDM diálogo caixa. * SDMGetFirstControl - Obtém o controle ID da primeira opção de diálogo em uma SDM diálogo caixa. Pode prover o controle ID do que é precisado pelo SDMSayControl função. * SDMGetLastControl - Provê o controle ID para a última opção em uma SDM diálogo caixa. Pode prover o controle ID do que é precisado pela função de SDMSayControl. * SDMGetFocus - Usado adquirir o Controle ID da opção de diálogo ativa ou controlar em uma SDM diálogo caixa. Esta função é freqüentemente usada como um parâmetro para o SDMSayWindowTypeAndText funcionam para proporcionar isto um controle ID. * SDMGetNextControl - Obtém o controle ID para a próxima opção em uma SDM diálogo caixa. Pode prover o controle ID do que é precisado pela função de SDMSayControl. * SDMGetPrevControl - Provê o controle ID para a opção prévia em uma SDM diálogo caixa. Pode prover o controle ID do que é precisado pela função de SDMSayControl. * SDMSayControl - Fala os conteúdos de uma janela de criança junto com seu lembrete em uma SDM diálogo caixa. Isto leituras editam campos, caixas de lista, conferem caixas, rádio abotoa, etc. Esta função é equivalente a SayControl, mas é projetado exclusivamente para SDM dialogue caixas. Todas as janelas de criança em uma SDM diálogo caixa têm a mesma manivela de janela, e o controle ID é usado para distinguir entre as várias opções na caixa de diálogo. * SDMSayStaticText - Lê um tipo de texto chamado "texto estático" que pode ser exibido em uma SDM diálogo caixa. Não lê o texto dentro edite campos, confira caixas, etc., ou os títulos ou lembretes que são freqüentemente associado com opções de diálogo. * SDMSayWindowTypeAndText - Usado com janelas de SDM ler o título de janela (quando a pessoa está presente), o tipo de janela, os conteúdos na janela, e informação relacionada sobre a opção de caixa de diálogo atual. Quando esta função for usada, marca o texto lê de forma que o SayNonHighlightedText e funções de SayHighlightedText faça não repita a mesma informação quando eles são ativados. Esta função só é usada com janelas de SDM e não com janelas de diálogo regulares. * SelectFromStartOfLine - Envia um SHIFT+HOME ao sistema. O resultado é controlado pela aplicação. Em palavra Bloco, todo o texto desde o começo da linha para o Cursor de PC é selecionado. (Usou principalmente por Magia) * SelectToEndOfLine - Envia um SHIFT+END ao sistema. O resultado é controlado pela aplicação. Em Palavra Bloco, todo o texto do cursor de PC para o fim do linha é selecionada. (Usou principalmente por Magia) * SelectFromTop - Envia um CTRL+SHIFT+HOME ao sistema. O resultado é controlado pela aplicação. Em Palavra Bloco, todo o texto do topo do documento para o Cursor de PC é selecionado. (Usou principalmente por Magia) * SelectToBottom - Envia um CTRL+SHIFT+END ao sistema. O resultado é controlado pela aplicação. Em Palavra Bloco, todo o texto do cursor de PC para o fundo de o documento é selecionado. (Usou principalmente por Magia) * SelectNextCharacter - Envia uma SETA de SHIFT+RIGHT ao sistema. O resultado é controlado pela aplicação. Em Palavra Bloco, o caráter à direita do PC cursor é selecionado. (Usou principalmente por Magia) * SelectPriorCharacter - Envia uma SETA de SHIFT+LEFT ao sistema. O resultado é controlado pela aplicação. Em Palavra Bloco, o caráter à esquerda do PC cursor é selecionado. (Usou principalmente por Magia) * SelectNextLine - Envia uma SETA de SHIFT+DOWN ao sistema. O resultado é controlado pela aplicação. Em Palavra Bloco, é selecionada a linha debaixo do cursor de PC. (Usou principalmente por Magia) * SelectPriorLine - Envia uma SETA de SHIFT+UP ao sistema. O resultado é controlado pela aplicação. Em Palavra Bloco, é selecionada a linha sobre o cursor de PC. (Usou principalmente por Magia) * SelectNextScreen - Envia um SHIFT+PAGE até o sistema. O resultado é controlado pela aplicação. Em Palavra Bloco, é selecionada A próxima tela de texto. (Usado principalmente por Magia) * SelectPriorScreen - Envia um SHIFT+PAGE até o sistema. O resultado é controlado pela aplicação. Em Palavra Bloco, é selecionada a tela anterior de texto. (Usado principalmente por Magia) * SelectNextWord - Envia uma SETA de CTRL+SHIFT+RIGHT ao sistema. O resultado é controlado pela aplicação. Em Palavra Bloco, a palavra à direita do cursor de PC é selecionado. (Usou principalmente por Magia) * SelectPriorWord - Envia uma SETA de CTRL+SHIFT+LEFT ao sistema. O resultado é controlado pela aplicação. Em Palavra Bloco, a palavra à esquerda do cursor de PC é selecionado. (Usou principalmente por Magia) * SetDefaultJCFOption - Mudanças o valor de falta para uma opção no falta JAWS configuração arquivo. Colocações em DEFAULT.JCF são usadas até que um JCF está carregado para uma aplicação. Quando um JCF não está disponível para a aplicação, então colocações na falta JCF continuam sendo usados. A função SetJCFOption é usado para fixar um valor no JCF para uma aplicação ativa. * SetJCFOption - Mudanças um valor no arquivo de configuração de JAWS para a aplicação ativa. Um arquivo de JCF novo está carregado cada tempo uma aplicação diferente é usada. Quando um JCF não estiver disponível para a aplicação, então as colocações no DEFAULT.JCF são usadas. O SetDefaultJCFOption é usado para mudar uma falta opção de JCF. * SetJAWSLanguage - Nas versões internacionais de JAWS, mudanças as JAWS ambiente operacional para o idioma especificado. * SetFocus - move o foco a uma janela especificada. * SetGraphicLabel - Acrescenta um rótulo gráfico aos gráficos especificados arquive (jgf). * SetRestriction - Para todos os cursores exclua o cursor de PC, esta função fixa a área dentro a qual o cursor atual é grátis mover. * SetRestrictionToFrame - Para qualquer cursor ativo menos o cursor de PC, esta função restringe o movimento daquele cursor para dentro da armação especificada. * SetRestrictionToRect - Para qualquer cursor ativo menos o cursor de PC, esta função restringe o movimento daquele cursor para dentro do retângulo especificado. * SetSynth - Faz JAWS trocar ao sintetizador especificado. * SetSynthLanguage - Para sintetizadores que apóiam idiomas múltiplos, mudanças o sintetizador para o idioma especificado. * ShiftTabKey - Se o cursor virtual não for ativo, esta função simplesmente atravessa para o SHIFT+TAB combinação fundamental para a aplicação. Se o Cursor Virtual é ativo, é movido à ligação prévia ou controla na ordem de tab. * TabKey - Se o cursor virtual não for ativo, esta função atravessa a chave de TAB simplesmente para a aplicação. Se o Cursor Virtual for ativo, é movido para a próxima ligação ou controla na ordem de tab. * ShouldItemSpeak - Esta função é usada para determinar se ou não o usuário especificou que deveriam ser falados artigos falados com um determinado Modo de Produção na corrente nível de verbosidade. * ShowHelpByID - Abre winhelp que usa um arquivo especificado e tópico ID. * ShowHelpByName - Abre winhelp que usa um arquivo especificado e tópico de índice. * ShutDownJAWS - Termina a aplicação de JAWS. * SpeechInUse - Confere para ver se produção de fala estiver sendo usada. * SpeechOff - Causas o sintetizador a ser emudecido. Isto é particularmente útil quando você precisa livrar o sintetizador de forma que um arquivo de onda pode ser jogado ou se você deseje emudecer fala durante script ou playback de função. Você pode inverter esta ação com SpeechOn. * SpeechOn - UnMutes o sintetizador. Contrários a ação de SpeechOff. * SpellString - Feitiços um fio de texto. Isto é semelhante à função de SayString, porém soletra a carta de fio por carta em vez de palavras que fala. * SpellWord - Feitiços a palavra ao cursor ativo. * StartJawsTaskList - O JTL permite o usuário para minimizar, maximize, fim, começo, e interruptor para aplicações. * StringContains - Determina se um fio de texto especificado é contido dentro de outro fio de texto. Você tem que especificar ambos o fio a ser procurado e o texto ser procurado. O posterior é caso sensível. Este é o único modo para conferir fios desde então em um caso moda sensível comparações de operador lógicas não é caso sensível. * StringLength - Usado achar o comprimento de um fio. * StringLower - Converte um caso misturado fio para todo minúscula. Por exemplo, isto poderia ser útil em combinação com a função de StringContains quando a pessoa fizer não deseje o cheque para ser caso sensível. * StringUpper - Converte um caso misturado fio para todo maiúscula. * StringLeft - Extratos um número especificado de caráter de leftmost de um fio. * StringRight - Extratos um número especificado de caráter de rightmost de um fio. * StringSegment - Quando um fio contiver delimiters, StringSegment pode ser chamado para extrair um segmento do fio. A pessoa é o índice do primeiro fio. * StringToInt - Converte um valor de fio a uma inteireza e lucros o valor de inteireza. Isto é usado em nomes de fio que são incluídos de números. * SubString - parte de Extratos de um fio de outro fio. Poderia ser usado para ler uma porção da informação que se aparece em uma linha de estado ou obtém uma parte de um fio para comparação lógica para outro fio. * StopSpeech - Silêncios o sintetizador. Isto é idêntico a apertar a chave de CTRL. * SwitchToScriptFile - Remove o atualmente script corrente e cargas um novo nisto é lugar. * SysGetDate - Obtém a data de sistema atual. * SysGetTime - Obtém o tempo de sistema atual. * SysTrayGetItemCount - Obtém o número de artigos na bandeja de sistema. * SysTrayGetItemToolTip - Usado em ListTaskTrayIcons obter a gorjeta de ferramenta que corresponde a um ícone de bandeja de tarefa específico. Esta função leva um único parâmetro, o índice do ícone de bandeja de tarefa para o qual a gorjeta de ferramenta é desejada. Devolve um valor de fio que é o texto da gorjeta de ferramenta em questão. * SysTrayMoveToItem - Move o cursor de JAWS ao local de um artigo na bandeja de sistema. * TrapKeys - Armadilha de Voltas modo fundamental Em ou Fora. Quando Apanha modo Fundamental é em, é ignorada qualquer chave não presa a scripts simplesmente e não passou em para a aplicação atual. O uso primário para esta característica está na Ajuda de Teclado onde chaves não prenderam a scripts deveria ser ignorado. * TurnOffFormsMode - Usado sair de modo de formas e retroceder o cursor de PC virtual em. * ToggleHomeRow - Pinos de madeira Casa Fila modo de tempo em tempo. Modo de Fila de casa é um estado trocado para o teclado; é análogo ao numlock no teclado complementar numérico. Quando é em, podem ser usadas as chaves de alfabeto e chaves de número para executar funções de script. Um apartamento de funções de janela especiais também está disponível neste modo. (Veja o seção em Utilidade Funciona depois neste manual.) Quando modo de Fila de Casa é retrocedido fora, então as chaves executam as funções standards deles/delas. * ToggleRestriction - JAWS de Pinos de madeira entre modo restringido e irrestrito. Estes modos não afetam o movimento do cursor de PC. Quando modo Irrestrito é usado, os outros cursores podem ser movidos livremente dentro da janela de aplicação ativa. Quando modo Restringido for usado, é limitado o movimento destes cursores a uma criança janela. Quando a função for usada, devolve um valor constante que representa a colocação nova. "EM" = restrição em, e "FORA" = restrição fora. * TypeCurrentScriptKey - Passa a chave presa diretamente ao script atual por para a aplicação. * TypeString - Usado simular a datilografia de um fio de caráter. Por exemplo, enviar um grupo de caráter por para a aplicação que simula o fio "teste", você ou poderia entrar na linha {t}{e}{s}{t}, ou você poderia usar TypeString ("teste"). * VerbosityLevel - Controla quanta JAWS dirão quando as mudanças de foco ou outros eventos acontecerem na tela ou com respeito a golpes de chave. * Enquanto - O operador de Tempo marca o começo de uma Volta de Tempo", o fim de qual é indicado por uma "declaração de EndWhile. Enquanto podem ser construídas voltas para executar umas séries de declarações de script repetidamente até que uma condição fica verdadeira ou falsa. Assim, enquanto podem ser usadas Voltas para executar ações repetidas e exceto espaço ou para execute umas séries de atividades repetidamente quando quantas vezes o usuário não sabe com antecedência que a repetição será requerida. 17 apêndice D Funções Embutidas importantes Organizadas por Tarefa Nota - Esta lista foi atualizada para refletir funções novas somadas em JAWS 3.7. Esses usando versões mais cedo não terão tudo das funções mostradas aqui. 17.1 cursor Use as funções seguintes para ativar e posicionar os quatro cursores disponível em JAWS: PC, JAWS, Invisível, e Virtual. GetActiveCursor SayActiveCursor GetCursorCol GetCursorRow SayCursorPos CaretVisible SaveCursor RestoreCursor InvisibleCursor RouteInvisibleToJAWS RouteInvisibleToPC IsInvisibleCursor JAWSCursor RouteJAWSToPC RouteJAWSToInvisible IsJAWSCursor ToggleRestriction SetRestriction SetRestrictionToFrame SetRestrictionToRect GetRestriction GetRestrictionName PCCursor RoutePCToJAWS IsPCCursor RouteBrailleToJAWS RouteBrailleToPC RouteJAWSToBraille RoutePCToBraille IsVirtualPCCursor TurnOffFormsMode 17.2 posicionamento Use as funções seguintes para posicionar um cursor, adquira informações no local desejado, e texto seleto. MoveTo MoveToControl MoveToGraphic MoveToWindow MoveToFrame JAWSEnd JAWSHome JAWSPageDown JAWSPageUp PriorCharacter GetCharacter GetCharacterPoints GetCharacterFont NextCharacter PriorChunk GetChunk NextChunk PriorLine GetLine GetLineTop NextLine PriorWord GetWord NextWord GetField GetCharacterAttributes GetCharacterWidth NextParagraph PriorParagraph NextSentence PriorSentence NextNonLink GetSelectedText SelectNextCharacter (Usou principalmente por Magia) SelectPriorCharacter (Usou principalmente por Magia) SelectNextWord (Usou principalmente por Magia) SelectPriorWord (Usou principalmente por Magia) SelectNextLine (Usou principalmente por Magia) SelectPriorLine (Usou principalmente por Magia) SelectToEndOfLine (Usou principalmente por Magia) SelectFromStartOfLine (Usou principalmente por Magia) SelectNextScreen (Usou principalmente por Magia) SelectPriorScreen (Usou principalmente por Magia) SelectToBottom (Usou principalmente por Magia) SelectFromTop (Usou principalmente por Magia) TabKey ShiftTabKey BackspaceKey EnterKey NextCell PriorCell UpCell DownCell GetCell GetColumnHeader GetRowHeader InTable 17.3 Processando condicional e Dando laçada Use as funções seguintes para executar condicional processando e dando laçada. Se-então EndIf Outro ElIf Não Enquanto EndWhile 17.4 dizem Use as funções seguintes para falar informação, ou da tela ou usando mensagens dentro de um script. Say SayAll SayInteger SayCharacter SayCharacterPhonetic SayWord SpellWord SayChunk SayControl SayField SayLine SayToCursor SayFromCursor SayTextBetween SayToBottom SayFont SayString SpellString SayParagraph SaySentence SayUsingVoice SayCell SayColumnHeader SayRowHeader SayMessage SayControlInformation 17.5 fio e Manipulação de Inteireza Use as funções seguintes para obter dados aproximadamente e manipular fios. StringContains SubString StringToInt IntToString StringLength StringLower StringUpper StringSegment StringLeft StringRight ProcessNewText FormatString Min Max 17.6 aplicação Use as funções seguintes para adquirir informação sobre uma aplicação. GetAppFileName GetAppTitle GetAppFilePath GetTreeViewLevel GetProgramVersion GetWindowAtPoint IsPointInWindow 17.7 braile Use as funções seguintes para examinar Braile condiciona e linhas de exibição na exibição de Braile. BrailleInUse PriorBrailleString BrailleString NextBrailleString BraillePanLeft BraillePanRight BrailleLine SixDotBraille EightDotBraille GetBrailleCellColumn GetBrailleCellRow GetBrailleMode SetBrailleMode GetLastBrailleRoutingKey BraillePriorLine BrailleNextLine BrailleG2StringLength BrailleRefresh BrailleString IsBrailleCursor BrailleAddFocusItem BrailleAddFocusLine BrailleAddFrame BrailleAddString 17.8 rato Use as funções seguintes para mover, clique, e adquira informações sobre o ponteiro de rato. MouseUp MouseDown MouseLeft MouseRight LeftMouseButton LeftMouseButtonLock ShiftLeftMouseClick AltLeftMouseClick ControlLeftMouseClick IsLeftButtonDown RightMouseButton IsRightButtonDown GetCursorShape DragItemWithMouse 17.9 achado Use as funções seguintes para achar informação específica sobre a tela. FindFirstAttribute FindPriorAttribute FindNextAttribute FindLastAttribute FindGraphic FindString JAWSFind JAWSFindNext FindColors FindDescendentWindow FindTopLevelWindow 17.10 Windows e Objetos Use as funções seguintes para adquirir informação sobre janelas e objetos e mover de janela a janela. GetForegroundWindow GetCurrentWindow HasTitleBar GetRealWindow GetAppMainWindow GetFirstWindow GetPriorWindow GetNextWindow GetWindowLeft GetWindowRight GetParent IsWindowDisabled IsWindowObscured IsWindowVisible GetFirstChild GetWindowClass GetWindowName GetWindowsOS GetWindowSubtypeCode GetWindowType GetWindowTypeCode GetWindowText GetWindowTextEx JAWSWindow MinimizeAllApps SayWindow SayWindowTypeAndText GetFocus SetFocus HasFocusRect SayFocusRect SayFocusRects GetFocusRect GetFocusRectBottom GetFocusRectLeft GetFocusRectRight GetFocusRectTop GetTextInFocusRects ActivateMenuBar DialogActive GetDialogPageName GetDialogStaticText IsMultiPageDialog GetControlID GetCurrentControlID GetDefaultButtonName MenusActive GetObject GetObjectAtPoint GetObjectType GetObjectTypeCode SayObjectTypeAndText GetCurrentObject GetFocusObject GetObjectName GetObjectValue GetObjectRect GetObjectState GetLineTop GetWindowBottom GetWindowTop RefreshWindow ToggleHomeRow ControlCanBeChecked ControlIsChecked GetGroupBoxName GetControlAttributes SayObjectActiveItem IE4GetCurrentDocument GetHTMLFrameCount GetLinkCount MSOGetMenuBarObject GetItemRect GetWindowRect 17.11 armações Use as funções seguintes para ler e manipular armações. GetFrameDescription GetFrameNameAtCursor GetFrameSynopsis SayFrame SayFrameAtCursor GetTextInFrame 17.12 scripts Use as funções seguintes para adquirir informações sobre scripts e script arquiva e controla a operação deles/delas. GetCurrentScriptKeyName GetScriptDescription GetScriptKeyName GetScriptKeyNames GetScriptSynopsis IsSameScript PerformScript AddHook RemoveHook TrapKeys SwitchToScriptFile GetScriptFileName 17.13 SDM As funções seguintes são usadas para só adquirir informações sobre SDM Dialogs. SDMGetFocus SDMGetFirstControl SDMGetPrevControl SDMGetNextControl SDMGetLastControl SDMSayControl SDMSayWindowTypeAndText SDMGetCurrentControl 17.14 Nível de oração O funções questão verbosidade colocações and/or seguinte os reajustaram. GetScreenEcho ScreenEcho GetVerbosity VerbosityLevel ShouldItemSpeak 17.15 opções Use as funções seguintes para adquirir informações de colocações de JAWS e os mudar. SetJAWSLanguage GetJCFOption SetJcfOption GetDefaultJcfOption SetDefaultJcfOption GetJAWSDirectory GetJAWSSettingsDirectory GetJAWSHelpDirectory GetJAWSUserName GetJFWVersion GetJFWSerialNumber InHJDialog IsJFWInstall 17.16 Atividades de sistema Use as funções seguintes para interagir com o sistema. MessageBox ExMessageBox InputBox GetHotKey PassKeyThrough PlaySound Pausa Demora Refresque Corrida FileExists GetFileDate DLGSelectItemInList DLGSelectScriptToRun DLGSysTray DLGSelectControls ScheduleFunction UnscheduleFunction ActivateStartMenu Buzine CopyToClipboard ClipboardHasData GraphicsLabeler SetGraphicLabel GetGraphicID GraphicsEnumerate GraphicsListHelper ShutDownJAWS ScreenGetWidth ScreenGetHeight SysTrayGetItemCount SysTrayGetItemToolTip SysTrayMoveToItem SysGetDate SysGetTime StartJawsTaskList GetWindowsSystemDirectory ShowHelpByName ShowHelpByID IsKeyWaiting IniReadInteger IniWriteInteger IniReadString IniWriteString IniRemoveKey IniRemoveSection 17.17 cores As funções seguintes podem ser usadas aprender aproximadamente e manipular cores de tela. GetColorBackground GetColorText GetColorName ColorToRGBString RGBStringToColor GetColorField 17.18 Sintetizador de controle As funções seguintes são usadas para controlar atividade de sintetizador. ResetSynth SpeechOn SpeechOff IsSpeechOff StopSpeech SpeechInUse SetSynth SetSynthLanguage GetVoiceVolume SetVoiceVolume GetVoiceRate SetVoiceRate GetVoicePitch SetVoicePitch GetVoicePunctuation SetVoicePunctuation GetVoicePerson SetVoicePerson GetSynthVolumeRange GetSynthRateRange GetSynthPitchRange GetVoiceParameters SetVoiceParameters 18 apêndice E Como para Extensão Fora e Personaliza uma Aplicação Desconhecida (cortesia de Glen Gordon) EU. Determine como bem o app trtablha sem customizations A. dialoga caixas falam corretamente? Lata de B. o usuário localiza informação importante depressa sobre a tela? C. o teclado pode ser usado para realizar todas as tarefas? D. Que informações deveriam ser combinadas no Braile exiba para acesso rápido? II. caixas de diálogo investigando A. Os scripts de Utilidade na Casa Remam chaves (Veja Capítulo 8.1) e o script de ScreenSensitiveHelpTechnical (CONTROL+INSERT+F1) (Veja Capítulo 8.2) pode ajudar com o seguindo: 1. Determine se cada controle for sua própria janela. 2. se controles têm que janela sem padrão classifica, tente os designando novamente. Isto causa os tipos de janela certos a ser falados quando tabbing para eles? (Janela desconhecida podem ser designadas novamente classes a classes conhecidas que usam o Diálogo de Classe de Janela acessadas com INSERT+7 ou com INSERT+F2 seguiu pela carta W e ENTRA.) Reclassification de edite campos deste modo em Internet Explorer dentro resulta em própria leitura destes campos. Se o cursor de PC não localiza o próprio artigo em um controle sem padrão: 1. Colocação de prova TrackFocusRect=1 na aplicação arquivo de JCF. Isto é terminado somando esta linha para o [OSM] seção do arquivo de JCF apropriado. Isto deveria permitir o cursor de PC para localizar o foco se é um retângulo de foco. (Algumas planilhas eletrônicas como uso de Microsoft Excel uma variante do retângulo de foco que só pode ser localizado conferindo o Inclua Reveste checkbox achado no diálogo de Opções Avançado do cardápio de Opções de Jogo do Gerente de Configuração.) Se qualquer um destes causa o foco localizar, oração automática pode ser scripted somando SayFocusRect funcione chama aos scripts saltados ao cursor e chaves de Aba. 2. Modifique o FocusChangedEvent ou SayFocusedWindow funcionam para fazer costume que processa para diálogos problemáticos. Veja o EUDORA.JSS FocusChangedEvent funcionar para exemplos. 3. Escreva uma função de costume para cada diálogo, e tenha a chamada de FocusChangedEvent que função quando aquele diálogo é ativo. Para um exemplo, veja o FocusChangedEvent funcione no WINWORD.JSS que foi modificado para controlar janelas de SDM e duas versões de Microsoft Word. 4. Quando tabbing entre controles, o FocusChangedEvent são chamados? Se não, some a linha ForceFocusChange=1 para o [OSM] seção do JCF da aplicação arquiva, e tenta novamente. A função de FocusChangedEvent normalmente é chamada só quando o foco novo tiver uma manivela de janela diferente do foco anterior. Em algumas aplicações como certas partes de Acesso de MS, um edite campo pode ter a mesma manivela como o campo anterior. Habilitando a opção de ForceFocusChange força o FocusChangedEvent para corra se a janela nova tem que pixel diferente coordena do velho. 5. Controles têm Id de controle sem igual? Nesse caso, os usa identificar qual controle é ativo. Assim, a pessoa poderia usar uma declaração Se-de então para conferir o valor do o Controle de janela ID e então executa certas operações ou fala certas mensagens para cada Controle sem igual ID. 6. Pixel de uso coordena para identificar qual controle é ativo. (Coordenadas deveriam ser janela, não tela relativo.) Assim, a pessoa poderia usar uma declaração Se-de então para confira o valor do local de pixel atual e então execute certas operações ou fale certas mensagens para cada jogo sem igual de coordenadas. 7. escreva código de costume para cada controle problemático. a. se o diálogo é há pouco uma janela grande (i.e., controles não têm Id de Controle sem igual), fixando TrackFocusRect=1, o cursor de PC pode mover como você TAB entre controles. b. escreva um script para dizer a própria informação baseado em local de pixel, e prenda à TAB e chaves de SHIFT+TAB. III. Informação importante localizando sobre a tela: A. Create armações ao redor de áreas de interesse. Os nomeie a chaves quentes ou os faça falar automaticamente. (Um exemplo donde isto pudesse ser feito é a linha de estado números de página em Microsoft Word. A pessoa poderia ler o número de página atual com um jogo fundamental quente ler a armação ou criar uma armação para ecoar todas as mudanças no número de página automaticamente.) Travessia de B. a hierarquia de janela para achar informação de interesse. Quer dizer, mova para cima ou até o pai e janelas de criança ou entre janelas ao mesmo nível lógico achar um controle ou campo de texto de interesse. Procura de C. para texto ou um gráfico na tela. Um exemplo disto seria procurar o toolbar abotoa em Microsoft Office para conferir o deles/delas apertou ou non-apertou estado. Isto não está tão seguro quanto atravessando a hierarquia. IV. Acesso de teclado aumentado provendo O A. escreve para scripts mover e fazer tique-taque em locais particulares e os prende a chaves. Isto simula acesso de teclado e eficiência de aumentos. 1. Use a função, MoveToFrame, posicionar a locais importantes dentro de armações usuário-definidas. 2. Use a função, MoveTo, posicionar em qualquer lugar a locais importantes na tela. 3. Use a função, FindGraphic, posicionar a locais importantes associaram com gráficos. 4. Use a função, FindString, posicionar a locais importantes que contêm texto específico. V. Customizing informação para Braile A. Modify BrailleBuildLine para combinar informação pertinente em circunstâncias diferentes como diálogo de construção de braile, cardápio, e outro nos scripts de falta. B. Modify BrailleBuildStatus para usar BrailleSetStatusCells para prover contexto informação dependente como informação de atributo. C. Add mensagens informador. 1. Proveja versões de costume de HotKeyHelp (INSERT+H). 2. Proveja versões de costume de ScreenSensitiveHelp (INSERT+F1). VI. Scripts aplicação-específicos nomeando e funções: A. Se tem um propósito semelhante como um script ou funciona no arquivo de falta, dê isto o mesmo nome, e não faz para uma aplicação tarefa fundamental específica. A tarefa no keymap de falta invocará isto. Uso de B. a aplicação keymap específico para nomear chaves a scripts que são sem igual (e exclusivamente nomeou) para aquela aplicação. Por exemplo, veja o uso de F7 para Feitiço Se registre a Microsoft Word. C. Se um script controlar caso normal e especial situações, então tenha aquela chamada de script bastante a versão de falta do DEFAULT.JSS para todas as situações normais que duplicando o código de falta no arquivo de script de aplicação. O script de aplicação deveria conter o código especial precisado para as situações especiais. 1. Use scripts para criar ações que podem ser prendidas a chaves. 2. Funções de uso por criar seqüência de dados que não precisarão ser prendido a chaves. C. Make uso da Sinopse e campos de Descrição ao criar scripts e funções. Eles provêem o texto falado quando em modo de Ajuda de Teclado.